# CONFIDENTIAL. (C) 2022 Cadence Design Systems, Inc. (Cadence)
# All rights reserved.
# ALL SOFTWARE BELOW IS PROPRIETARY AND CONFIDENTIAL TO CADENCE
# AND IS SUBJECT TO THE FULL PROTECTION OF COPYRIGHT AND TRADE SECRET LAW.
# Copying or modifying this software is strictly prohibited and illegal.
# Using this software without a valid license from Cadence is strictly
# prohibited and illegal.  De-obfuscating, de-minimizing, or any other
# attempt to reverse engineer or discover the workings of this software,
# is strictly prohibited. Even if software is exposed or visible, it is
# still proprietary and confidential and the above prohibitions apply.
# This software is NOT "Sample Code". For purposes of customization or
# interoperation with other software you must use Sample Code
# specifically labeled as such.
# Please contact Cadence at eyesopen.com/legal if you have any questions
# about this warning.


# This file was automatically generated by SWIG (http://www.swig.org).
# Version 4.0.2
#
# 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
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")


def swig_import_helper():
    from os.path import dirname
    import importlib.util
    import importlib.abc

    spec = importlib.machinery.PathFinder().find_spec("_oechem", [dirname(__file__)])

    if spec is None:
        # OpenEye Import Statements
        spec = importlib.machinery.PathFinder().find_spec("libs",[dirname(__file__)])
    libs = importlib.util.module_from_spec(spec)

    import sys
    sys.modules[spec.name] = libs
    spec.loader.exec_module(libs)

    assert not sys.platform.startswith('win')

    _oeshape = libs.OEGetModule('_oeshape3601')
    return _oeshape

_oeshape = swig_import_helper()
del swig_import_helper

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, 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 weakref


def SwigNumber_Check(o: "PyObject *") -> "double":
    return _oeshape.SwigNumber_Check(o)

def SwigNumber_AsDouble(o: "PyObject *") -> "double":
    return _oeshape.SwigNumber_AsDouble(o)

def __no_op(arg1: "OEAtomIter") -> "void":
    return _oeshape.__no_op(arg1)
import openeye.oechem as oechem
OEScoreType_Tanimoto = _oeshape.OEScoreType_Tanimoto

OEScoreType_Overlap = _oeshape.OEScoreType_Overlap

OEDerivativeType_Interpolated = _oeshape.OEDerivativeType_Interpolated

OEDerivativeType_NearestValue = _oeshape.OEDerivativeType_NearestValue

OEOverlapRadii_Carbon = _oeshape.OEOverlapRadii_Carbon

OEOverlapRadii_Dual = _oeshape.OEOverlapRadii_Dual

OEOverlapRadii_All = _oeshape.OEOverlapRadii_All


OEOverlapRadii_Default = OEOverlapRadii_Carbon

OEOverlapRadii_Max = _oeshape.OEOverlapRadii_Max

OEExponentialType_Standard = _oeshape.OEExponentialType_Standard

OEExponentialType_Tabulated = _oeshape.OEExponentialType_Tabulated

OEMomentSymmetry_NoSymmetry = _oeshape.OEMomentSymmetry_NoSymmetry

OEMomentSymmetry_Oblate = _oeshape.OEMomentSymmetry_Oblate

OEMomentSymmetry_Prolate = _oeshape.OEMomentSymmetry_Prolate

OEMomentSymmetry_Spherical = _oeshape.OEMomentSymmetry_Spherical

OEMomentSymmetry_Unknown = _oeshape.OEMomentSymmetry_Unknown

OEOverlapResultType_Tanimoto = _oeshape.OEOverlapResultType_Tanimoto

OEOverlapResultType_Overlap = _oeshape.OEOverlapResultType_Overlap

OEOverlapResultType_RefTversky = _oeshape.OEOverlapResultType_RefTversky

OEOverlapResultType_FitTversky = _oeshape.OEOverlapResultType_FitTversky

OEOverlapResultType_ColorTanimoto = _oeshape.OEOverlapResultType_ColorTanimoto

OEOverlapResultType_ColorScore = _oeshape.OEOverlapResultType_ColorScore

OEOverlapResultType_RefColorTversky = _oeshape.OEOverlapResultType_RefColorTversky

OEOverlapResultType_FitColorTversky = _oeshape.OEOverlapResultType_FitColorTversky

OEOverlapResultType_ComboScore = _oeshape.OEOverlapResultType_ComboScore

OEOverlapResultType_TanimotoCombo = _oeshape.OEOverlapResultType_TanimotoCombo

OEOverlapResultType_RefTverskyCombo = _oeshape.OEOverlapResultType_RefTverskyCombo

OEOverlapResultType_FitTverskyCombo = _oeshape.OEOverlapResultType_FitTverskyCombo

OEOverlapResultType_OverlapCombo = _oeshape.OEOverlapResultType_OverlapCombo

OEBOOrientation_Inertial = _oeshape.OEBOOrientation_Inertial

OEBOOrientation_AsIs = _oeshape.OEBOOrientation_AsIs

OEBOOrientation_Random = _oeshape.OEBOOrientation_Random

OEBOOrientation_InertialAtHeavyAtoms = _oeshape.OEBOOrientation_InertialAtHeavyAtoms

OEBOOrientation_InertialAtColorAtoms = _oeshape.OEBOOrientation_InertialAtColorAtoms

OEBOOrientation_UserInertialStarts = _oeshape.OEBOOrientation_UserInertialStarts

OEBOOrientation_Subrocs = _oeshape.OEBOOrientation_Subrocs


OEBOOrientation_Default = OEBOOrientation_Inertial

OEBOMinType_Tanimoto = _oeshape.OEBOMinType_Tanimoto

OEBOMinType_Overlap = _oeshape.OEBOMinType_Overlap

OEBOMinType_Autoscale = _oeshape.OEBOMinType_Autoscale


OEBOMinType_Default = OEBOMinType_Tanimoto

OEShapeType_Grid = _oeshape.OEShapeType_Grid

OEShapeType_Exact = _oeshape.OEShapeType_Exact

OEShapeType_Analytic = _oeshape.OEShapeType_Analytic

OEShapeType_Hermite = _oeshape.OEShapeType_Hermite

OEShapeType_None = _oeshape.OEShapeType_None

OEColorType_Grid = _oeshape.OEColorType_Grid

OEColorType_Exact = _oeshape.OEColorType_Exact

OEColorType_Analytic = _oeshape.OEColorType_Analytic

OEColorType_None = _oeshape.OEColorType_None

OEOverlapMethod_Grid = _oeshape.OEOverlapMethod_Grid

OEOverlapMethod_Analytic = _oeshape.OEOverlapMethod_Analytic

OEOverlapMethod_Analytic2 = _oeshape.OEOverlapMethod_Analytic2

OEOverlapMethod_Exact = _oeshape.OEOverlapMethod_Exact

OEOverlapMethod_Max = _oeshape.OEOverlapMethod_Max

OEOverlapRepresentation_Atomic = _oeshape.OEOverlapRepresentation_Atomic

OEOverlapRepresentation_Atoms = _oeshape.OEOverlapRepresentation_Atoms

OEOverlapRepresentation_Bonding = _oeshape.OEOverlapRepresentation_Bonding

OEOverlapRepresentation_Bonds = _oeshape.OEOverlapRepresentation_Bonds

OEOverlapRepresentation_Full = _oeshape.OEOverlapRepresentation_Full

OEOverlapRepresentation_All = _oeshape.OEOverlapRepresentation_All

OEOverlapRepresentation_Gaussian = _oeshape.OEOverlapRepresentation_Gaussian


OEOverlapRepresentation_Default = OEOverlapRepresentation_Atomic

OEOverlapRepresentation_Max = _oeshape.OEOverlapRepresentation_Max

OEColorFFType_Undefined = _oeshape.OEColorFFType_Undefined

OEColorFFType_OEDefault = _oeshape.OEColorFFType_OEDefault

OEColorFFType_ImplicitMillsDean = _oeshape.OEColorFFType_ImplicitMillsDean

OEColorFFType_ExplicitMillsDean = _oeshape.OEColorFFType_ExplicitMillsDean

OEColorFFType_ImplicitMillsDeanNoRings = _oeshape.OEColorFFType_ImplicitMillsDeanNoRings

OEColorFFType_ExplicitMillsDeanNoRings = _oeshape.OEColorFFType_ExplicitMillsDeanNoRings

OEColorFFType_Custom = _oeshape.OEColorFFType_Custom

OEColorFFType_Max = _oeshape.OEColorFFType_Max

class OEColorForceField(object):
    r"""Proxy of C++ OEShape::OEColorForceField class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEColorForceField self) -> OEColorForceField
        __init__(OEColorForceField self, OEColorForceField rhs) -> OEColorForceField
        __init__(OEColorForceField self, OEShape::OEColorForceFieldImpl const * impl) -> OEColorForceField
        """
        _oeshape.OEColorForceField_swiginit(self, _oeshape.new_OEColorForceField(*args))
    __swig_destroy__ = _oeshape.delete_OEColorForceField

    def Init(self, *args) -> "bool":
        r"""
        Init(OEColorForceField self, oeistream ifs, bool verbose=False) -> bool
        Init(OEColorForceField self, std::string const & filename, bool verbose=False) -> bool
        Init(OEColorForceField self, unsigned int cffType) -> bool
        """
        return _oeshape.OEColorForceField_Init(self, *args)

    def Ready(self) -> "bool":
        r"""Ready(OEColorForceField self) -> bool"""
        return _oeshape.OEColorForceField_Ready(self)

    def Clear(self) -> "void":
        r"""Clear(OEColorForceField self)"""
        return _oeshape.OEColorForceField_Clear(self)

    def ClearInteractions(self) -> "void":
        r"""ClearInteractions(OEColorForceField self)"""
        return _oeshape.OEColorForceField_ClearInteractions(self)

    def GetTitle(self) -> "char const *":
        r"""GetTitle(OEColorForceField self) -> char const *"""
        return _oeshape.OEColorForceField_GetTitle(self)

    def SetTitle(self, title: "char const *") -> "bool":
        r"""SetTitle(OEColorForceField self, char const * title) -> bool"""
        return _oeshape.OEColorForceField_SetTitle(self, title)

    def AddType(self, name: "char const *") -> "unsigned int":
        r"""AddType(OEColorForceField self, char const * name) -> unsigned int"""
        return _oeshape.OEColorForceField_AddType(self, name)

    def GetNumTypes(self) -> "unsigned int":
        r"""GetNumTypes(OEColorForceField self) -> unsigned int"""
        return _oeshape.OEColorForceField_GetNumTypes(self)

    def GetType(self, k: "std::string") -> "unsigned int":
        r"""GetType(OEColorForceField self, std::string k) -> unsigned int"""
        return _oeshape.OEColorForceField_GetType(self, k)

    def GetTypeName(self, type: "unsigned int") -> "std::string":
        r"""GetTypeName(OEColorForceField self, unsigned int type) -> std::string"""
        return _oeshape.OEColorForceField_GetTypeName(self, type)

    def GetTypes(self) -> "OESystem::OEIterBase< unsigned int > *":
        r"""GetTypes(OEColorForceField self) -> OESystem::OEIterBase< unsigned int > *"""
        return _oeshape.OEColorForceField_GetTypes(self)

    def AddColorer(self, type: "unsigned int", smarts: "char const *") -> "bool":
        r"""AddColorer(OEColorForceField self, unsigned int type, char const * smarts) -> bool"""
        return _oeshape.OEColorForceField_AddColorer(self, type, smarts)

    def AddInteraction(self, type1: "unsigned int", type2: "unsigned int", interaction_type: "std::string const &", weight: "float", range: "float") -> "bool":
        r"""AddInteraction(OEColorForceField self, unsigned int type1, unsigned int type2, std::string const & interaction_type, float weight, float range) -> bool"""
        return _oeshape.OEColorForceField_AddInteraction(self, type1, type2, interaction_type, weight, range)

    def NumInteractions(self) -> "unsigned int":
        r"""NumInteractions(OEColorForceField self) -> unsigned int"""
        return _oeshape.OEColorForceField_NumInteractions(self)

    def Write(self, os: "oeostream") -> "bool":
        r"""Write(OEColorForceField self, oeostream os) -> bool"""
        return _oeshape.OEColorForceField_Write(self, os)

    def CreateCopy(self) -> "OEShape::OEColorForceField *":
        r"""CreateCopy(OEColorForceField self) -> OEColorForceField"""
        return _oeshape.OEColorForceField_CreateCopy(self)

    def GetImpl(self) -> "OEShape::OEColorForceFieldImpl const *":
        r"""GetImpl(OEColorForceField self) -> OEShape::OEColorForceFieldImpl const *"""
        return _oeshape.OEColorForceField_GetImpl(self)

# Register OEColorForceField in _oeshape:
_oeshape.OEColorForceField_swigregister(OEColorForceField)

class OEIsColorAtomPred(oechem.OEUnaryAtomPred):
    r"""Proxy of C++ OEShape::OEIsColorAtomPred class."""

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

    def __init__(self):
        r"""__init__(OEIsColorAtomPred self) -> OEIsColorAtomPred"""
        _oeshape.OEIsColorAtomPred_swiginit(self, _oeshape.new_OEIsColorAtomPred())

    def __call__(self, atom: "OEAtomBase") -> "bool":
        r"""__call__(OEIsColorAtomPred self, OEAtomBase atom) -> bool"""
        return _oeshape.OEIsColorAtomPred___call__(self, atom)

    def CreateCopy(self, *args):
        try:
            return _oeshape.OEIsColorAtomPred_CreateCopy(self, *args)
        except RuntimeError:
            try:
                return self.__class__().__disown__()
            except:
                raise RuntimeError("CreateCopy must be specialized for %s" % self.__class__.__name__)


    __swig_destroy__ = _oeshape.delete_OEIsColorAtomPred

# Register OEIsColorAtomPred in _oeshape:
_oeshape.OEIsColorAtomPred_swigregister(OEIsColorAtomPred)


def OEHasColorAtoms(mol: "OEMolBase") -> "bool":
    r"""OEHasColorAtoms(OEMolBase mol) -> bool"""
    return _oeshape.OEHasColorAtoms(mol)

def OEHasPerceivedColorAtoms(mol: "OEMolBase") -> "bool":
    r"""OEHasPerceivedColorAtoms(OEMolBase mol) -> bool"""
    return _oeshape.OEHasPerceivedColorAtoms(mol)

def OECountColorAtoms(mol: "OEMolBase") -> "unsigned int":
    r"""OECountColorAtoms(OEMolBase mol) -> unsigned int"""
    return _oeshape.OECountColorAtoms(mol)

def OEHasCachedSelfColor(*args) -> "bool":
    r"""
    OEHasCachedSelfColor(OEMCMolBase mol) -> bool
    OEHasCachedSelfColor(OEMolBase mol) -> bool
    """
    return _oeshape.OEHasCachedSelfColor(*args)

def OEGetCachedSelfColor(*args) -> "float":
    r"""
    OEGetCachedSelfColor(OEConfBase mol, bool allcolor=False) -> float
    OEGetCachedSelfColor(OEMolBase mol, bool allcolor=False) -> float
    """
    return _oeshape.OEGetCachedSelfColor(*args)

def OEClearCachedSelfColor(*args) -> "void":
    r"""
    OEClearCachedSelfColor(OEMCMolBase mol)
    OEClearCachedSelfColor(OEMolBase mol)
    """
    return _oeshape.OEClearCachedSelfColor(*args)

def OERemoveColorAtoms(*args) -> "void":
    r"""
    OERemoveColorAtoms(OEMCMolBase mol)
    OERemoveColorAtoms(OEMolBase mol)
    """
    return _oeshape.OERemoveColorAtoms(*args)

def OEGetColorType(coloratom: "OEAtomBase") -> "unsigned int":
    r"""OEGetColorType(OEAtomBase coloratom) -> unsigned int"""
    return _oeshape.OEGetColorType(coloratom)

def OESetColorType(coloratom: "OEAtomBase", type: "unsigned int", typeName: "std::string const &") -> "bool":
    r"""OESetColorType(OEAtomBase coloratom, unsigned int type, std::string const & typeName) -> bool"""
    return _oeshape.OESetColorType(coloratom, type, typeName)

def OEIsColorAtom(atom: "OEAtomBase") -> "bool":
    r"""OEIsColorAtom(OEAtomBase atom) -> bool"""
    return _oeshape.OEIsColorAtom(atom)

def OEGetColorAtoms(mol: "OEMolBase") -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    r"""OEGetColorAtoms(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
    return _oeshape.OEGetColorAtoms(mol)

def OEGetColorParents(atom: "OEAtomBase") -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    r"""OEGetColorParents(OEAtomBase atom) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
    return _oeshape.OEGetColorParents(atom)

def OESetColorParents(atom: "OEAtomBase", parents: "OEChem::OEAtomBase const **", num: "unsigned int") -> "bool":
    r"""OESetColorParents(OEAtomBase atom, OEChem::OEAtomBase const ** parents, unsigned int num) -> bool"""
    return _oeshape.OESetColorParents(atom, parents, num)

def OESetCoordsFromColorParents(*args) -> "bool":
    r"""
    OESetCoordsFromColorParents(OEMCMolBase mol) -> bool
    OESetCoordsFromColorParents(OEMolBase mol) -> bool
    """
    return _oeshape.OESetCoordsFromColorParents(*args)

def OEAddColorAtom(*args) -> "OEChem::OEAtomBase *":
    r"""
    OEAddColorAtom(OEMolBase mol, float const * coords, unsigned int type, std::string const & typeName, std::string const & parentName=std::string()) -> OEAtomBase
    OEAddColorAtom(OEMolBase mol, unsigned int type, std::string const & typeName, std::string const & parentName) -> OEAtomBase
    OEAddColorAtom(OEMCMolBase mol, unsigned int type, std::string const & typeName, std::string const & parentName) -> OEAtomBase
    OEAddColorAtom(OEMolBase mol, OEChem::OEAtomBase const ** parents, unsigned int num, unsigned int type, std::string const & typeName) -> OEAtomBase
    OEAddColorAtom(OEMCMolBase mol, OEChem::OEAtomBase const ** parents, unsigned int num, unsigned int type, std::string const & typeName) -> OEAtomBase
    """
    return _oeshape.OEAddColorAtom(*args)

def OEHasCompressedColorAtoms(mol: "OEMolBase") -> "bool":
    r"""OEHasCompressedColorAtoms(OEMolBase mol) -> bool"""
    return _oeshape.OEHasCompressedColorAtoms(mol)

def OECompressColorAtoms(*args) -> "unsigned int":
    r"""
    OECompressColorAtoms(OEMCMolBase mol) -> unsigned int
    OECompressColorAtoms(OEMolBase mol) -> unsigned int
    """
    return _oeshape.OECompressColorAtoms(*args)

def OEUncompressColorAtoms(*args) -> "unsigned int":
    r"""
    OEUncompressColorAtoms(OEMCMolBase mol) -> unsigned int
    OEUncompressColorAtoms(OEMolBase mol) -> unsigned int
    """
    return _oeshape.OEUncompressColorAtoms(*args)

def OEDeleteCompressedColorAtoms(mol: "OEMolBase") -> "void":
    r"""OEDeleteCompressedColorAtoms(OEMolBase mol)"""
    return _oeshape.OEDeleteCompressedColorAtoms(mol)
class OEColorFFParameter(object):
    r"""Proxy of C++ OEShape::OEColorFFParameter class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEColorFFParameter self, std::string const & name) -> OEColorFFParameter
        __init__(OEColorFFParameter self) -> OEColorFFParameter
        __init__(OEColorFFParameter self, OEColorFFParameter arg2) -> OEColorFFParameter
        """
        _oeshape.OEColorFFParameter_swiginit(self, _oeshape.new_OEColorFFParameter(*args))
    __swig_destroy__ = _oeshape.delete_OEColorFFParameter

    def CreateCopy(self) -> "OESystem::OEParameter *":
        r"""CreateCopy(OEColorFFParameter self) -> OEParameter"""
        return _oeshape.OEColorFFParameter_CreateCopy(self)

# Register OEColorFFParameter in _oeshape:
_oeshape.OEColorFFParameter_swigregister(OEColorFFParameter)

class OEShapeOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEShapeOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEShapeOptions self) -> OEShapeOptions
        __init__(OEShapeOptions self, OEShapeOptions arg2) -> OEShapeOptions
        """
        _oeshape.OEShapeOptions_swiginit(self, _oeshape.new_OEShapeOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEShapeOptions

    def GetScoreType(self) -> "unsigned int":
        r"""GetScoreType(OEShapeOptions self) -> unsigned int"""
        return _oeshape.OEShapeOptions_GetScoreType(self)

    def SetScoreType(self, value: "unsigned int const") -> "bool":
        r"""SetScoreType(OEShapeOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEShapeOptions_SetScoreType(self, value)

    def GetRadiiApproximation(self) -> "unsigned int":
        r"""GetRadiiApproximation(OEShapeOptions self) -> unsigned int"""
        return _oeshape.OEShapeOptions_GetRadiiApproximation(self)

    def SetRadiiApproximation(self, value: "unsigned int const") -> "bool":
        r"""SetRadiiApproximation(OEShapeOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEShapeOptions_SetRadiiApproximation(self, value)

    def SetCarbonRadius(self, radius: "double const") -> "bool":
        r"""SetCarbonRadius(OEShapeOptions self, double const radius) -> bool"""
        return _oeshape.OEShapeOptions_SetCarbonRadius(self, radius)

    def GetCarbonRadius(self) -> "double":
        r"""GetCarbonRadius(OEShapeOptions self) -> double"""
        return _oeshape.OEShapeOptions_GetCarbonRadius(self)

    def CreateCopy(self) -> "OEShape::OEShapeOptions *":
        r"""CreateCopy(OEShapeOptions self) -> OEShapeOptions"""
        return _oeshape.OEShapeOptions_CreateCopy(self)

    def GetCarbonWidth(self) -> "double":
        r"""GetCarbonWidth(OEShapeOptions self) -> double"""
        return _oeshape.OEShapeOptions_GetCarbonWidth(self)

    def GetGlobalPrefactor(self) -> "double":
        r"""GetGlobalPrefactor(OEShapeOptions self) -> double"""
        return _oeshape.OEShapeOptions_GetGlobalPrefactor(self)

    def GetConvCarbonWidth(self) -> "double":
        r"""GetConvCarbonWidth(OEShapeOptions self) -> double"""
        return _oeshape.OEShapeOptions_GetConvCarbonWidth(self)

    def GetConvCarbonPrefactor(self) -> "double":
        r"""GetConvCarbonPrefactor(OEShapeOptions self) -> double"""
        return _oeshape.OEShapeOptions_GetConvCarbonPrefactor(self)

    def GetGaussWidth(self, argRadius: "double const") -> "double":
        r"""GetGaussWidth(OEShapeOptions self, double const argRadius) -> double"""
        return _oeshape.OEShapeOptions_GetGaussWidth(self, argRadius)

# Register OEShapeOptions in _oeshape:
_oeshape.OEShapeOptions_swigregister(OEShapeOptions)

class OEColorOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEColorOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEColorOptions self) -> OEColorOptions
        __init__(OEColorOptions self, OEColorOptions argOpts) -> OEColorOptions
        """
        _oeshape.OEColorOptions_swiginit(self, _oeshape.new_OEColorOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEColorOptions

    def GetMultiplier(self) -> "double":
        r"""GetMultiplier(OEColorOptions self) -> double"""
        return _oeshape.OEColorOptions_GetMultiplier(self)

    def SetMultiplier(self, value: "double const") -> "bool":
        r"""SetMultiplier(OEColorOptions self, double const value) -> bool"""
        return _oeshape.OEColorOptions_SetMultiplier(self, value)

    def GetScoreType(self) -> "unsigned int":
        r"""GetScoreType(OEColorOptions self) -> unsigned int"""
        return _oeshape.OEColorOptions_GetScoreType(self)

    def SetScoreType(self, value: "unsigned int const") -> "bool":
        r"""SetScoreType(OEColorOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEColorOptions_SetScoreType(self, value)

    def GetColorForceField(self) -> "OEShape::OEColorForceField const *":
        r"""GetColorForceField(OEColorOptions self) -> OEColorForceField"""
        return _oeshape.OEColorOptions_GetColorForceField(self)

    def GetColorForceFieldType(self) -> "unsigned int":
        r"""GetColorForceFieldType(OEColorOptions self) -> unsigned int"""
        return _oeshape.OEColorOptions_GetColorForceFieldType(self)

    def SetColorForceField(self, *args) -> "bool":
        r"""
        SetColorForceField(OEColorOptions self, unsigned int const value) -> bool
        SetColorForceField(OEColorOptions self, std::string const & value) -> bool
        SetColorForceField(OEColorOptions self, oeistream value) -> bool
        SetColorForceField(OEColorOptions self, OEColorForceField value) -> bool
        """
        return _oeshape.OEColorOptions_SetColorForceField(self, *args)

    def CreateCopy(self) -> "OEShape::OEColorOptions *":
        r"""CreateCopy(OEColorOptions self) -> OEColorOptions"""
        return _oeshape.OEColorOptions_CreateCopy(self)

# Register OEColorOptions in _oeshape:
_oeshape.OEColorOptions_swigregister(OEColorOptions)

class OEAnalyticOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEAnalyticOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEAnalyticOptions self) -> OEAnalyticOptions
        __init__(OEAnalyticOptions self, OEAnalyticOptions arg2) -> OEAnalyticOptions
        """
        _oeshape.OEAnalyticOptions_swiginit(self, _oeshape.new_OEAnalyticOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEAnalyticOptions

    def GetUseProxyGrid(self) -> "bool":
        r"""GetUseProxyGrid(OEAnalyticOptions self) -> bool"""
        return _oeshape.OEAnalyticOptions_GetUseProxyGrid(self)

    def SetUseProxyGrid(self, value: "bool const") -> "bool":
        r"""SetUseProxyGrid(OEAnalyticOptions self, bool const value) -> bool"""
        return _oeshape.OEAnalyticOptions_SetUseProxyGrid(self, value)

    def GetProxyGridCutoff(self) -> "double":
        r"""GetProxyGridCutoff(OEAnalyticOptions self) -> double"""
        return _oeshape.OEAnalyticOptions_GetProxyGridCutoff(self)

    def SetProxyGridCutoff(self, value: "double const") -> "bool":
        r"""SetProxyGridCutoff(OEAnalyticOptions self, double const value) -> bool"""
        return _oeshape.OEAnalyticOptions_SetProxyGridCutoff(self, value)

    def GetExpType(self) -> "unsigned int":
        r"""GetExpType(OEAnalyticOptions self) -> unsigned int"""
        return _oeshape.OEAnalyticOptions_GetExpType(self)

    def SetExpType(self, value: "unsigned int const") -> "bool":
        r"""SetExpType(OEAnalyticOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEAnalyticOptions_SetExpType(self, value)

    def CreateCopy(self) -> "OEShape::OEAnalyticOptions *":
        r"""CreateCopy(OEAnalyticOptions self) -> OEAnalyticOptions"""
        return _oeshape.OEAnalyticOptions_CreateCopy(self)

# Register OEAnalyticOptions in _oeshape:
_oeshape.OEAnalyticOptions_swigregister(OEAnalyticOptions)

class OEShapeGridOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEShapeGridOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEShapeGridOptions self) -> OEShapeGridOptions
        __init__(OEShapeGridOptions self, OEShapeGridOptions arg2) -> OEShapeGridOptions
        """
        _oeshape.OEShapeGridOptions_swiginit(self, _oeshape.new_OEShapeGridOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEShapeGridOptions

    def GetGridSpacing(self) -> "double":
        r"""GetGridSpacing(OEShapeGridOptions self) -> double"""
        return _oeshape.OEShapeGridOptions_GetGridSpacing(self)

    def SetGridSpacing(self, value: "double const") -> "bool":
        r"""SetGridSpacing(OEShapeGridOptions self, double const value) -> bool"""
        return _oeshape.OEShapeGridOptions_SetGridSpacing(self, value)

    def GetDerivativeType(self) -> "unsigned int":
        r"""GetDerivativeType(OEShapeGridOptions self) -> unsigned int"""
        return _oeshape.OEShapeGridOptions_GetDerivativeType(self)

    def SetDerivativeType(self, value: "unsigned int const") -> "bool":
        r"""SetDerivativeType(OEShapeGridOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEShapeGridOptions_SetDerivativeType(self, value)

    def CreateCopy(self) -> "OEShape::OEShapeGridOptions *":
        r"""CreateCopy(OEShapeGridOptions self) -> OEShapeGridOptions"""
        return _oeshape.OEShapeGridOptions_CreateCopy(self)

# Register OEShapeGridOptions in _oeshape:
_oeshape.OEShapeGridOptions_swigregister(OEShapeGridOptions)

class OEOverlapPrep(object):
    r"""Proxy of C++ OEShape::OEOverlapPrep class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEOverlapPrep self) -> OEOverlapPrep
        __init__(OEOverlapPrep self, OEOverlapPrep argOpts) -> OEOverlapPrep
        """
        _oeshape.OEOverlapPrep_swiginit(self, _oeshape.new_OEOverlapPrep(*args))
    __swig_destroy__ = _oeshape.delete_OEOverlapPrep

    def SetUseHydrogens(self, argValue: "bool const") -> "void":
        r"""SetUseHydrogens(OEOverlapPrep self, bool const argValue)"""
        return _oeshape.OEOverlapPrep_SetUseHydrogens(self, argValue)

    def GetUseHydrogens(self) -> "bool":
        r"""GetUseHydrogens(OEOverlapPrep self) -> bool"""
        return _oeshape.OEOverlapPrep_GetUseHydrogens(self)

    def SetAssignBondiRadii(self, argValue: "bool const") -> "void":
        r"""SetAssignBondiRadii(OEOverlapPrep self, bool const argValue)"""
        return _oeshape.OEOverlapPrep_SetAssignBondiRadii(self, argValue)

    def GetAssignBondiRadii(self) -> "bool":
        r"""GetAssignBondiRadii(OEOverlapPrep self) -> bool"""
        return _oeshape.OEOverlapPrep_GetAssignBondiRadii(self)

    def SetAssignColor(self, argValue: "bool const") -> "void":
        r"""SetAssignColor(OEOverlapPrep self, bool const argValue)"""
        return _oeshape.OEOverlapPrep_SetAssignColor(self, argValue)

    def GetAssignColor(self) -> "bool":
        r"""GetAssignColor(OEOverlapPrep self) -> bool"""
        return _oeshape.OEOverlapPrep_GetAssignColor(self)

    def SetColorForceField(self, argCff: "OEColorForceField") -> "bool":
        r"""SetColorForceField(OEOverlapPrep self, OEColorForceField argCff) -> bool"""
        return _oeshape.OEOverlapPrep_SetColorForceField(self, argCff)

    def GetColorForceField(self) -> "OEShape::OEColorForceField const &":
        r"""GetColorForceField(OEOverlapPrep self) -> OEColorForceField"""
        return _oeshape.OEOverlapPrep_GetColorForceField(self)

    def Initialize(self, *args) -> "void":
        r"""
        Initialize(OEOverlapPrep self, OEShapeOptions argOptions)
        Initialize(OEOverlapPrep self, OEColorOptions argOptions)
        """
        return _oeshape.OEOverlapPrep_Initialize(self, *args)

    def Prep(self, *args) -> "bool":
        r"""
        Prep(OEOverlapPrep self, OEMCMolBase argMol) -> bool
        Prep(OEOverlapPrep self, OEMolBase argMol) -> bool
        """
        return _oeshape.OEOverlapPrep_Prep(self, *args)

# Register OEOverlapPrep in _oeshape:
_oeshape.OEOverlapPrep_swigregister(OEOverlapPrep)

class OEOverlapResults(object):
    r"""Proxy of C++ OEShape::OEOverlapResults class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    refSelfOverlap = property(_oeshape.OEOverlapResults_refSelfOverlap_get, _oeshape.OEOverlapResults_refSelfOverlap_set, doc=r"""refSelfOverlap : float""")
    fitSelfOverlap = property(_oeshape.OEOverlapResults_fitSelfOverlap_get, _oeshape.OEOverlapResults_fitSelfOverlap_set, doc=r"""fitSelfOverlap : float""")
    tanimoto = property(_oeshape.OEOverlapResults_tanimoto_get, _oeshape.OEOverlapResults_tanimoto_set, doc=r"""tanimoto : float""")
    overlap = property(_oeshape.OEOverlapResults_overlap_get, _oeshape.OEOverlapResults_overlap_set, doc=r"""overlap : float""")
    refSelfColor = property(_oeshape.OEOverlapResults_refSelfColor_get, _oeshape.OEOverlapResults_refSelfColor_set, doc=r"""refSelfColor : float""")
    fitSelfColor = property(_oeshape.OEOverlapResults_fitSelfColor_get, _oeshape.OEOverlapResults_fitSelfColor_set, doc=r"""fitSelfColor : float""")
    colorscore = property(_oeshape.OEOverlapResults_colorscore_get, _oeshape.OEOverlapResults_colorscore_set, doc=r"""colorscore : float""")
    scaledcolor = property(_oeshape.OEOverlapResults_scaledcolor_get, _oeshape.OEOverlapResults_scaledcolor_set, doc=r"""scaledcolor : float""")
    exclusion_score = property(_oeshape.OEOverlapResults_exclusion_score_get, _oeshape.OEOverlapResults_exclusion_score_set, doc=r"""exclusion_score : float""")

    def __init__(self, *args):
        r"""
        __init__(OEOverlapResults self) -> OEOverlapResults
        __init__(OEOverlapResults self, OEOverlapResults rhs) -> OEOverlapResults
        """
        _oeshape.OEOverlapResults_swiginit(self, _oeshape.new_OEOverlapResults(*args))

    def __iadd__(self, rhs: "OEOverlapResults") -> "OEShape::OEOverlapResults &":
        r"""__iadd__(OEOverlapResults self, OEOverlapResults rhs) -> OEOverlapResults"""
        return _oeshape.OEOverlapResults___iadd__(self, rhs)

    def __itruediv__(self, *args):
        return _oeshape.OEOverlapResults___itruediv__(self, *args)
    __idiv__ = __itruediv__



    def GetRefSelfOverlap(self) -> "float":
        r"""GetRefSelfOverlap(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetRefSelfOverlap(self)

    def GetFitSelfOverlap(self) -> "float":
        r"""GetFitSelfOverlap(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetFitSelfOverlap(self)

    def GetTanimoto(self) -> "float":
        r"""GetTanimoto(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetTanimoto(self)

    def GetShapeTanimoto(self) -> "float":
        r"""GetShapeTanimoto(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetShapeTanimoto(self)

    def GetOverlap(self) -> "float":
        r"""GetOverlap(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetOverlap(self)

    def GetRefTversky(self) -> "float":
        r"""GetRefTversky(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetRefTversky(self)

    def GetFitTversky(self) -> "float":
        r"""GetFitTversky(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetFitTversky(self)

    def GetTversky(self, alpha: "float"=0.95, beta: "float"=0.05) -> "float":
        r"""GetTversky(OEOverlapResults self, float alpha=0.95, float beta=0.05) -> float"""
        return _oeshape.OEOverlapResults_GetTversky(self, alpha, beta)

    def GetRefSelfColor(self) -> "float":
        r"""GetRefSelfColor(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetRefSelfColor(self)

    def GetFitSelfColor(self) -> "float":
        r"""GetFitSelfColor(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetFitSelfColor(self)

    def GetColorTanimoto(self) -> "float":
        r"""GetColorTanimoto(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetColorTanimoto(self)

    def GetColorScore(self) -> "float":
        r"""GetColorScore(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetColorScore(self)

    def GetRefColorTversky(self) -> "float":
        r"""GetRefColorTversky(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetRefColorTversky(self)

    def GetFitColorTversky(self) -> "float":
        r"""GetFitColorTversky(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetFitColorTversky(self)

    def GetColorTversky(self, alpha: "float"=0.95, beta: "float"=0.05) -> "float":
        r"""GetColorTversky(OEOverlapResults self, float alpha=0.95, float beta=0.05) -> float"""
        return _oeshape.OEOverlapResults_GetColorTversky(self, alpha, beta)

    def GetComboScore(self) -> "float":
        r"""GetComboScore(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetComboScore(self)

    def GetTanimotoCombo(self) -> "float":
        r"""GetTanimotoCombo(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetTanimotoCombo(self)

    def GetRefTverskyCombo(self) -> "float":
        r"""GetRefTverskyCombo(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetRefTverskyCombo(self)

    def GetFitTverskyCombo(self) -> "float":
        r"""GetFitTverskyCombo(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetFitTverskyCombo(self)

    def GetOverlapCombo(self, colorFactor: "float const"=1.0) -> "float":
        r"""GetOverlapCombo(OEOverlapResults self, float const colorFactor=1.0) -> float"""
        return _oeshape.OEOverlapResults_GetOverlapCombo(self, colorFactor)

    def GetResult(self, argType: "unsigned int const") -> "float":
        r"""GetResult(OEOverlapResults self, unsigned int const argType) -> float"""
        return _oeshape.OEOverlapResults_GetResult(self, argType)

    def GetTverskyCombo(self, alpha: "float"=0.95, beta: "float"=0.05) -> "float":
        r"""GetTverskyCombo(OEOverlapResults self, float alpha=0.95, float beta=0.05) -> float"""
        return _oeshape.OEOverlapResults_GetTverskyCombo(self, alpha, beta)
    __swig_destroy__ = _oeshape.delete_OEOverlapResults

# Register OEOverlapResults in _oeshape:
_oeshape.OEOverlapResults_swigregister(OEOverlapResults)

class OEBestOverlayScore(OEOverlapResults):
    r"""Proxy of C++ OEShape::OEBestOverlayScore class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    refconfidx = property(_oeshape.OEBestOverlayScore_refconfidx_get, _oeshape.OEBestOverlayScore_refconfidx_set, doc=r"""refconfidx : unsigned int""")
    fitconfidx = property(_oeshape.OEBestOverlayScore_fitconfidx_get, _oeshape.OEBestOverlayScore_fitconfidx_set, doc=r"""fitconfidx : unsigned int""")
    fitsymmetry = property(_oeshape.OEBestOverlayScore_fitsymmetry_get, _oeshape.OEBestOverlayScore_fitsymmetry_set, doc=r"""fitsymmetry : unsigned int""")
    rmat = property(_oeshape.OEBestOverlayScore_rmat_get, _oeshape.OEBestOverlayScore_rmat_set, doc=r"""rmat : a(9).float""")
    trans = property(_oeshape.OEBestOverlayScore_trans_get, _oeshape.OEBestOverlayScore_trans_set, doc=r"""trans : a(3).float""")

    def __init__(self, *args):
        r"""
        __init__(OEBestOverlayScore self) -> OEBestOverlayScore
        __init__(OEBestOverlayScore self, OEBestOverlayScore rhs) -> OEBestOverlayScore
        """
        _oeshape.OEBestOverlayScore_swiginit(self, _oeshape.new_OEBestOverlayScore(*args))

    def GetFitConfIdx(self) -> "unsigned int":
        r"""GetFitConfIdx(OEBestOverlayScore self) -> unsigned int"""
        return _oeshape.OEBestOverlayScore_GetFitConfIdx(self)

    def GetRefConfIdx(self) -> "unsigned int":
        r"""GetRefConfIdx(OEBestOverlayScore self) -> unsigned int"""
        return _oeshape.OEBestOverlayScore_GetRefConfIdx(self)

    def GetRotMatrix(self, rmat: "float *") -> "void":
        r"""GetRotMatrix(OEBestOverlayScore self, float * rmat)"""
        return _oeshape.OEBestOverlayScore_GetRotMatrix(self, rmat)

    def GetTranslation(self, trans: "float *") -> "void":
        r"""GetTranslation(OEBestOverlayScore self, float * trans)"""
        return _oeshape.OEBestOverlayScore_GetTranslation(self, trans)

    def Transform(self, *args) -> "bool":
        r"""
        Transform(OEBestOverlayScore self, OEMolBase mol) -> bool
        Transform(OEBestOverlayScore self, OEConfBase mol) -> bool
        """
        return _oeshape.OEBestOverlayScore_Transform(self, *args)
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScore

# Register OEBestOverlayScore in _oeshape:
_oeshape.OEBestOverlayScore_swigregister(OEBestOverlayScore)

class OEBestOverlayResults(object):
    r"""Proxy of C++ OEShape::OEBestOverlayResults class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEBestOverlayResults self) -> OEBestOverlayResults
        __init__(OEBestOverlayResults self, OEBestOverlayResults rhs) -> OEBestOverlayResults
        """
        _oeshape.OEBestOverlayResults_swiginit(self, _oeshape.new_OEBestOverlayResults(*args))
    __swig_destroy__ = _oeshape.delete_OEBestOverlayResults

    def GetScores(self, *args) -> "OESystem::OEIterBase< OEShape::OEBestOverlayScore > *":
        r"""
        GetScores(OEBestOverlayResults self) -> OESystem::OEIterBase< OEShape::OEBestOverlayScore >
        GetScores(OEBestOverlayResults self, OEBestOverlayScoreSorterPred sorter, int nbest=1) -> OESystem::OEIterBase< OEShape::OEBestOverlayScore >
        """
        return _oeshape.OEBestOverlayResults_GetScores(self, *args)

    def AddScore(self, sc: "OEBestOverlayScore") -> "bool":
        r"""AddScore(OEBestOverlayResults self, OEBestOverlayScore sc) -> bool"""
        return _oeshape.OEBestOverlayResults_AddScore(self, sc)

    def Clear(self) -> "bool":
        r"""Clear(OEBestOverlayResults self) -> bool"""
        return _oeshape.OEBestOverlayResults_Clear(self)

# Register OEBestOverlayResults in _oeshape:
_oeshape.OEBestOverlayResults_swigregister(OEBestOverlayResults)


def OESortOverlayScores(dst: "OEBestOverlayScoreIter", scores: "OEBestOverlayResultsIter", sorter: "OEBestOverlayScoreSorterPred", nbest: "unsigned int"=1, conforder: "bool"=False) -> "void":
    r"""OESortOverlayScores(OEBestOverlayScoreIter dst, OEBestOverlayResultsIter scores, OEBestOverlayScoreSorterPred sorter, unsigned int nbest=1, bool conforder=False)"""
    return _oeshape.OESortOverlayScores(dst, scores, sorter, nbest, conforder)
class OEFComponentIter(object):
    r"""Proxy of C++ OESystem::OEIter< OEOpt::OEFComponent > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFComponentIter self) -> OEFComponentIter
        __init__(OEFComponentIter self, OEFComponentIter rhs) -> OEFComponentIter
        __init__(OEFComponentIter self, OESystem::OEIterBase< OEOpt::OEFComponent > * rhs) -> OEFComponentIter
        __init__(OEFComponentIter self, OESystem::OEIterBase< OESystem::OEIter< OEOpt::OEFComponent >::NonConstA > * rhs) -> OEFComponentIter
        """
        _oeshape.OEFComponentIter_swiginit(self, _oeshape.new_OEFComponentIter(*args))
    __swig_destroy__ = _oeshape.delete_OEFComponentIter

    def Copy(self) -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""Copy(OEFComponentIter self) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEFComponentIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEFComponentIter self, OESystem::OEIterBase< OEOpt::OEFComponent > * ib)
        Push(OEFComponentIter self, OEFComponentIter iter)
        """
        return _oeshape.OEFComponentIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OEOpt::OEFComponent,OEOpt::OEFComponent > const &") -> "void":
        r"""Sort(OEFComponentIter self, OESystem::OEBinaryPredicate< OEOpt::OEFComponent,OEOpt::OEFComponent > const & sort_criterion)"""
        return _oeshape.OEFComponentIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        r"""ToFirst(OEFComponentIter self) -> OEFComponentIter"""
        return _oeshape.OEFComponentIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        r"""ToLast(OEFComponentIter self) -> OEFComponentIter"""
        return _oeshape.OEFComponentIter_ToLast(self)

    def __ref__(self) -> "OEOpt::OEFComponent &":
        r"""__ref__(OEFComponentIter self) -> OEFComponent"""
        return _oeshape.OEFComponentIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEFComponentIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEFComponentIter self) -> PyObject *"""
        return _oeshape.OEFComponentIter_next(self)

    def Target(self) -> "OEOpt::OEFComponent &":
        r"""Target(OEFComponentIter self) -> OEFComponent"""
        return _oeshape.OEFComponentIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        r"""
        Next(OEFComponentIter self) -> OEFComponentIter
        Next(OEFComponentIter self, int i) -> OEFComponentIter
        """
        return _oeshape.OEFComponentIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OEOpt::OEFComponent > &":
        r"""
        Prev(OEFComponentIter self) -> OEFComponentIter
        Prev(OEFComponentIter self, int i) -> OEFComponentIter
        """
        return _oeshape.OEFComponentIter_Prev(self, *args)

# Register OEFComponentIter in _oeshape:
_oeshape.OEFComponentIter_swigregister(OEFComponentIter)

class OEFComponent(object):
    r"""Proxy of C++ OEOpt::OEFComponent class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    name = property(_oeshape.OEFComponent_name_get, _oeshape.OEFComponent_name_set, doc=r"""name : std::string""")
    value = property(_oeshape.OEFComponent_value_get, _oeshape.OEFComponent_value_set, doc=r"""value : double""")

    def __init__(self, *args):
        r"""
        __init__(OEFComponent self) -> OEFComponent
        __init__(OEFComponent self, std::string const & n, double v) -> OEFComponent
        """
        _oeshape.OEFComponent_swiginit(self, _oeshape.new_OEFComponent(*args))
    __swig_destroy__ = _oeshape.delete_OEFComponent

# Register OEFComponent in _oeshape:
_oeshape.OEFComponent_swigregister(OEFComponent)

class OEFunc0(object):
    r"""Proxy of C++ OEOpt::OEFunc0 class."""

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

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

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEFunc0 self) -> unsigned int"""
        return _oeshape.OEFunc0_NumVar(self)

    def __call__(self, x: "double const *") -> "double":
        r"""__call__(OEFunc0 self, double const * x) -> double"""
        return _oeshape.OEFunc0___call__(self, x)

    def GetFComponents(self, arg2: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEFunc0 self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEFunc0_GetFComponents(self, arg2)
    __swig_destroy__ = _oeshape.delete_OEFunc0

# Register OEFunc0 in _oeshape:
_oeshape.OEFunc0_swigregister(OEFunc0)

class OEFunc1(OEFunc0):
    r"""Proxy of C++ OEOpt::OEFunc1 class."""

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

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

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEFunc1 self) -> unsigned int"""
        return _oeshape.OEFunc1_NumVar(self)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEFunc1 self, float const ** arg2) -> OEFloatVector
        __call__(OEFunc1 self, double const * x) -> double
        __call__(OEFunc1 self, double const * x, double * g) -> double
        """
        return _oeshape.OEFunc1___call__(self, *args)

    def GetFComponents(self, arg2: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEFunc1 self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEFunc1_GetFComponents(self, arg2)
    __swig_destroy__ = _oeshape.delete_OEFunc1

# Register OEFunc1 in _oeshape:
_oeshape.OEFunc1_swigregister(OEFunc1)

class OEFunc2(OEFunc1):
    r"""Proxy of C++ OEOpt::OEFunc2 class."""

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

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

    def __call__(self, *args) -> "bool":
        r"""
        __call__(OEFunc2 self, double const * x) -> double
        __call__(OEFunc2 self, double const * x, double * g) -> double
        __call__(OEFunc2 self, double const * x, double * h, double * g) -> bool
        """
        return _oeshape.OEFunc2___call__(self, *args)
    __swig_destroy__ = _oeshape.delete_OEFunc2

# Register OEFunc2 in _oeshape:
_oeshape.OEFunc2_swigregister(OEFunc2)


def GetSWIG_NewPointerObj(*args) -> "PyObject *":
    r"""
    GetSWIG_NewPointerObj(OEAtomBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEBondBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEMolBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEConfBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETransBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OENbrs arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAltLocation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAltGroup arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESequenceAlignment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERole arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(std::string const & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(std::string & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERotamer arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETorsion arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColor arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColorStop arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEGroupBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAtomBondSet arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESubSearch arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHintTypeBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESphere arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEReceptorProteinConstraint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEReceptorConstraintFeature arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierFragment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierChain arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEPlaceHydrogensMoverNote arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAnnotation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFuzzy arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFComponent arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteraction arg, bool owned) -> PyObject *
    """
    return _oeshape.GetSWIG_NewPointerObj(*args)
class OEInteractionIter(object):
    r"""Proxy of C++ OESystem::OEIter< OEMolPotential::OEInteraction > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEInteractionIter self) -> OEInteractionIter
        __init__(OEInteractionIter self, OEInteractionIter rhs) -> OEInteractionIter
        __init__(OEInteractionIter self, OESystem::OEIterBase< OEMolPotential::OEInteraction > * rhs) -> OEInteractionIter
        __init__(OEInteractionIter self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEInteraction >::NonConstA > * rhs) -> OEInteractionIter
        """
        _oeshape.OEInteractionIter_swiginit(self, _oeshape.new_OEInteractionIter(*args))
    __swig_destroy__ = _oeshape.delete_OEInteractionIter

    def Copy(self) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""Copy(OEInteractionIter self) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeshape.OEInteractionIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEInteractionIter self, OESystem::OEIterBase< OEMolPotential::OEInteraction > * ib)
        Push(OEInteractionIter self, OEInteractionIter iter)
        """
        return _oeshape.OEInteractionIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OEMolPotential::OEInteraction,OEMolPotential::OEInteraction > const &") -> "void":
        r"""Sort(OEInteractionIter self, OESystem::OEBinaryPredicate< OEMolPotential::OEInteraction,OEMolPotential::OEInteraction > const & sort_criterion)"""
        return _oeshape.OEInteractionIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        r"""ToFirst(OEInteractionIter self) -> OEInteractionIter"""
        return _oeshape.OEInteractionIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        r"""ToLast(OEInteractionIter self) -> OEInteractionIter"""
        return _oeshape.OEInteractionIter_ToLast(self)

    def __ref__(self) -> "OEMolPotential::OEInteraction &":
        r"""__ref__(OEInteractionIter self) -> OEInteraction"""
        return _oeshape.OEInteractionIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEInteractionIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEInteractionIter self) -> PyObject *"""
        return _oeshape.OEInteractionIter_next(self)

    def Target(self) -> "OEMolPotential::OEInteraction &":
        r"""Target(OEInteractionIter self) -> OEInteraction"""
        return _oeshape.OEInteractionIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        r"""
        Next(OEInteractionIter self) -> OEInteractionIter
        Next(OEInteractionIter self, int i) -> OEInteractionIter
        """
        return _oeshape.OEInteractionIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OEMolPotential::OEInteraction > &":
        r"""
        Prev(OEInteractionIter self) -> OEInteractionIter
        Prev(OEInteractionIter self, int i) -> OEInteractionIter
        """
        return _oeshape.OEInteractionIter_Prev(self, *args)

# Register OEInteractionIter in _oeshape:
_oeshape.OEInteractionIter_swigregister(OEInteractionIter)

class OEInteraction(object):
    r"""Proxy of C++ OEMolPotential::OEInteraction class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEInteraction self, OEMolPotential::OEInteractImpl & arg2) -> OEInteraction
        __init__(OEInteraction self, OEInteraction arg2) -> OEInteraction
        """
        _oeshape.OEInteraction_swiginit(self, _oeshape.new_OEInteraction(*args))
    __swig_destroy__ = _oeshape.delete_OEInteraction

    def NumAtoms(self) -> "unsigned int":
        r"""NumAtoms(OEInteraction self) -> unsigned int"""
        return _oeshape.OEInteraction_NumAtoms(self)

    def NumValues(self) -> "unsigned int":
        r"""NumValues(OEInteraction self) -> unsigned int"""
        return _oeshape.OEInteraction_NumValues(self)

    def GetName(self) -> "std::string":
        r"""GetName(OEInteraction self) -> std::string"""
        return _oeshape.OEInteraction_GetName(self)

    def GetValues(self, grads: "double *"=None) -> "double":
        r"""GetValues(OEInteraction self, double * grads=None) -> double"""
        return _oeshape.OEInteraction_GetValues(self, grads)

    def GetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        r"""GetAtoms(OEInteraction self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oeshape.OEInteraction_GetAtoms(self)

    def GetImpl(self) -> "OEMolPotential::OEInteractImpl *":
        r"""GetImpl(OEInteraction self) -> OEMolPotential::OEInteractImpl *"""
        return _oeshape.OEInteraction_GetImpl(self)

# Register OEInteraction in _oeshape:
_oeshape.OEInteraction_swigregister(OEInteraction)

class OEMolFunc(object):
    r"""Proxy of C++ OEMolPotential::OEMolFunc 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
    __swig_destroy__ = _oeshape.delete_OEMolFunc

    def Setup(self, mol: "OEMolBase") -> "bool":
        r"""Setup(OEMolFunc self, OEMolBase mol) -> bool"""
        return _oeshape.OEMolFunc_Setup(self, mol)

    def GetInteractions(self, arg2: "OEMolBase", arg3: "double const *", functype: "unsigned int"=0) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEMolFunc self, OEMolBase arg2, double const * arg3, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >"""
        return _oeshape.OEMolFunc_GetInteractions(self, arg2, arg3, functype)

# Register OEMolFunc in _oeshape:
_oeshape.OEMolFunc_swigregister(OEMolFunc)

class OEMolFunc0(OEFunc0, OEMolFunc):
    r"""Proxy of C++ OEMolPotential::OEMolFunc0 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
    __swig_destroy__ = _oeshape.delete_OEMolFunc0

# Register OEMolFunc0 in _oeshape:
_oeshape.OEMolFunc0_swigregister(OEMolFunc0)

class OEMolFunc1(OEFunc1, OEMolFunc0):
    r"""Proxy of C++ OEMolPotential::OEMolFunc1 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
    __swig_destroy__ = _oeshape.delete_OEMolFunc1

    def CreateCopy(self) -> "OEMolPotential::OEMolFunc1 *":
        r"""CreateCopy(OEMolFunc1 self) -> OEMolFunc1"""
        return _oeshape.OEMolFunc1_CreateCopy(self)

# Register OEMolFunc1 in _oeshape:
_oeshape.OEMolFunc1_swigregister(OEMolFunc1)

class OEMolFunc2(OEFunc2, OEMolFunc1):
    r"""Proxy of C++ OEMolPotential::OEMolFunc2 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
    __swig_destroy__ = _oeshape.delete_OEMolFunc2

# Register OEMolFunc2 in _oeshape:
_oeshape.OEMolFunc2_swigregister(OEMolFunc2)

class OEForceField(OEMolFunc1):
    r"""Proxy of C++ OEMolPotential::OEForceField 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
    __swig_destroy__ = _oeshape.delete_OEForceField

    def PrepMol(self, mol: "OEMolBase", sweep: "bool"=True, warnOK: "bool"=True) -> "bool":
        r"""PrepMol(OEForceField self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool"""
        return _oeshape.OEForceField_PrepMol(self, mol, sweep, warnOK)

    def GetTitle(self) -> "std::string":
        r"""GetTitle(OEForceField self) -> std::string"""
        return _oeshape.OEForceField_GetTitle(self)

    def SetTitle(self, argTitle: "std::string const &") -> "void":
        r"""SetTitle(OEForceField self, std::string const & argTitle)"""
        return _oeshape.OEForceField_SetTitle(self, argTitle)

    def CreateCopy(self) -> "OEMolPotential::OEForceField *":
        r"""CreateCopy(OEForceField self) -> OEForceField"""
        return _oeshape.OEForceField_CreateCopy(self)

    def Add(self, *args) -> "bool":
        r"""
        Add(OEForceField self, OEMolFunc1 f, bool own=False) -> bool
        Add(OEForceField self, OEMolPotential::OEFFParams const & ffp) -> bool
        """
        return _oeshape.OEForceField_Add(self, *args)

    def Remove(self, f: "OEMolFunc1") -> "bool":
        r"""Remove(OEForceField self, OEMolFunc1 f) -> bool"""
        return _oeshape.OEForceField_Remove(self, f)

    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        r"""GetComponentPotentials(OEForceField self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oeshape.OEForceField_GetComponentPotentials(self)

    def GetParams(self) -> "std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >":
        r"""GetParams(OEForceField self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oeshape.OEForceField_GetParams(self)

# Register OEForceField in _oeshape:
_oeshape.OEForceField_swigregister(OEForceField)

class OEGenericFF2(OEMolFunc2, OEForceField):
    r"""Proxy of C++ OEMolPotential::OEGenericFF2 class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEGenericFF2 self) -> OEGenericFF2
        __init__(OEGenericFF2 self, OEGenericFF2 arg2) -> OEGenericFF2
        """
        _oeshape.OEGenericFF2_swiginit(self, _oeshape.new_OEGenericFF2(*args))
    __swig_destroy__ = _oeshape.delete_OEGenericFF2

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEGenericFF2 self) -> unsigned int"""
        return _oeshape.OEGenericFF2_NumVar(self)

    def Setup(self, mol: "OEMolBase") -> "bool":
        r"""Setup(OEGenericFF2 self, OEMolBase mol) -> bool"""
        return _oeshape.OEGenericFF2_Setup(self, mol)

    def __call__(self, *args) -> "bool":
        r"""
        __call__(OEGenericFF2 self, double const * coord) -> double
        __call__(OEGenericFF2 self, double const * coord, double * grad) -> double
        __call__(OEGenericFF2 self, double const * coord, double * hess, double * grad) -> bool
        """
        return _oeshape.OEGenericFF2___call__(self, *args)

    def GetFComponents(self, coord: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEGenericFF2 self, double const * coord) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEGenericFF2_GetFComponents(self, coord)

    def GetInteractions(self, mol: "OEMolBase", coord: "double const *", functype: "unsigned int"=0) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEGenericFF2 self, OEMolBase mol, double const * coord, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >"""
        return _oeshape.OEGenericFF2_GetInteractions(self, mol, coord, functype)

    def CreateCopy(self) -> "OEMolPotential::OEGenericFF2 *":
        r"""CreateCopy(OEGenericFF2 self) -> OEGenericFF2"""
        return _oeshape.OEGenericFF2_CreateCopy(self)

    def PrepMol(self, mol: "OEMolBase", sweep: "bool"=True, warnOK: "bool"=True) -> "bool":
        r"""PrepMol(OEGenericFF2 self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool"""
        return _oeshape.OEGenericFF2_PrepMol(self, mol, sweep, warnOK)

    def Add(self, *args) -> "bool":
        r"""
        Add(OEGenericFF2 self, OEMolPotential::OEFFParams const & ffp) -> bool
        Add(OEGenericFF2 self, OEMolFunc1 func, bool own=False) -> bool
        """
        return _oeshape.OEGenericFF2_Add(self, *args)

    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        r"""GetComponentPotentials(OEGenericFF2 self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oeshape.OEGenericFF2_GetComponentPotentials(self)

    def GetParams(self) -> "std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >":
        r"""GetParams(OEGenericFF2 self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oeshape.OEGenericFF2_GetParams(self)

    def AddMolFunc(self, f: "OEMolFunc2", own: "bool"=False) -> "bool":
        r"""AddMolFunc(OEGenericFF2 self, OEMolFunc2 f, bool own=False) -> bool"""
        return _oeshape.OEGenericFF2_AddMolFunc(self, f, own)

    def RemoveMolFunc(self, f: "OEMolFunc2") -> "bool":
        r"""RemoveMolFunc(OEGenericFF2 self, OEMolFunc2 f) -> bool"""
        return _oeshape.OEGenericFF2_RemoveMolFunc(self, f)

    def GetComponents(self) -> "std::vector< OEMolPotential::OEMolFunc2 *,std::allocator< OEMolPotential::OEMolFunc2 * > >":
        r"""GetComponents(OEGenericFF2 self) -> std::vector< OEMolPotential::OEMolFunc2 *,std::allocator< OEMolPotential::OEMolFunc2 * > >"""
        return _oeshape.OEGenericFF2_GetComponents(self)

# Register OEGenericFF2 in _oeshape:
_oeshape.OEGenericFF2_swigregister(OEGenericFF2)

class OEGenericFF(OEForceField):
    r"""Proxy of C++ OEMolPotential::OEGenericFF class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEGenericFF self) -> OEGenericFF
        __init__(OEGenericFF self, OEGenericFF arg2) -> OEGenericFF
        __init__(OEGenericFF self, OEGenericFF2 arg2) -> OEGenericFF
        """
        _oeshape.OEGenericFF_swiginit(self, _oeshape.new_OEGenericFF(*args))
    __swig_destroy__ = _oeshape.delete_OEGenericFF

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEGenericFF self) -> unsigned int"""
        return _oeshape.OEGenericFF_NumVar(self)

    def Setup(self, mol: "OEMolBase") -> "bool":
        r"""Setup(OEGenericFF self, OEMolBase mol) -> bool"""
        return _oeshape.OEGenericFF_Setup(self, mol)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEGenericFF self, double const * coord) -> double
        __call__(OEGenericFF self, double const * coord, double * grad) -> double
        """
        return _oeshape.OEGenericFF___call__(self, *args)

    def GetFComponents(self, coord: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEGenericFF self, double const * coord) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEGenericFF_GetFComponents(self, coord)

    def GetInteractions(self, mol: "OEMolBase", coord: "double const *", functype: "unsigned int"=0) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEGenericFF self, OEMolBase mol, double const * coord, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >"""
        return _oeshape.OEGenericFF_GetInteractions(self, mol, coord, functype)

    def CreateCopy(self) -> "OEMolPotential::OEGenericFF *":
        r"""CreateCopy(OEGenericFF self) -> OEGenericFF"""
        return _oeshape.OEGenericFF_CreateCopy(self)

    def PrepMol(self, mol: "OEMolBase", sweep: "bool"=True, warnOK: "bool"=True) -> "bool":
        r"""PrepMol(OEGenericFF self, OEMolBase mol, bool sweep=True, bool warnOK=True) -> bool"""
        return _oeshape.OEGenericFF_PrepMol(self, mol, sweep, warnOK)

    def Add(self, *args) -> "bool":
        r"""
        Add(OEGenericFF self, OEMolFunc1 f, bool own=False) -> bool
        Add(OEGenericFF self, OEMolPotential::OEFFParams const & ffp) -> bool
        """
        return _oeshape.OEGenericFF_Add(self, *args)

    def Remove(self, f: "OEMolFunc1") -> "bool":
        r"""Remove(OEGenericFF self, OEMolFunc1 f) -> bool"""
        return _oeshape.OEGenericFF_Remove(self, f)

    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        r"""GetComponentPotentials(OEGenericFF self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oeshape.OEGenericFF_GetComponentPotentials(self)

    def GetParams(self) -> "std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >":
        r"""GetParams(OEGenericFF self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oeshape.OEGenericFF_GetParams(self)

    def AddMolFunc(self, f: "OEMolFunc1", own: "bool"=False) -> "bool":
        r"""AddMolFunc(OEGenericFF self, OEMolFunc1 f, bool own=False) -> bool"""
        return _oeshape.OEGenericFF_AddMolFunc(self, f, own)

    def RemoveMolFunc(self, f: "OEMolFunc1") -> "bool":
        r"""RemoveMolFunc(OEGenericFF self, OEMolFunc1 f) -> bool"""
        return _oeshape.OEGenericFF_RemoveMolFunc(self, f)

    def GetComponents(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        r"""GetComponents(OEGenericFF self) -> std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >"""
        return _oeshape.OEGenericFF_GetComponents(self)

# Register OEGenericFF in _oeshape:
_oeshape.OEGenericFF_swigregister(OEGenericFF)

class OEInterMolFunc1(OEMolFunc1):
    r"""Proxy of C++ OEMolPotential::OEInterMolFunc1 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
    __swig_destroy__ = _oeshape.delete_OEInterMolFunc1

    def SetupHost(self, host: "OEMolBase") -> "bool":
        r"""SetupHost(OEInterMolFunc1 self, OEMolBase host) -> bool"""
        return _oeshape.OEInterMolFunc1_SetupHost(self, host)

    def SetHostFlex(self, pred: "OEUnaryAtomPred") -> "bool":
        r"""SetHostFlex(OEInterMolFunc1 self, OEUnaryAtomPred pred) -> bool"""
        return _oeshape.OEInterMolFunc1_SetHostFlex(self, pred)

    def GetVar(self, var: "double *", x: "double const *") -> "void":
        r"""GetVar(OEInterMolFunc1 self, double * var, double const * x)"""
        return _oeshape.OEInterMolFunc1_GetVar(self, var, x)

    def AdaptHostCoords(self, coords: "double *", var: "double const *") -> "bool":
        r"""AdaptHostCoords(OEInterMolFunc1 self, double * coords, double const * var) -> bool"""
        return _oeshape.OEInterMolFunc1_AdaptHostCoords(self, coords, var)

# Register OEInterMolFunc1 in _oeshape:
_oeshape.OEInterMolFunc1_swigregister(OEInterMolFunc1)

class OEInterMolFunc2(OEInterMolFunc1, OEMolFunc2):
    r"""Proxy of C++ OEMolPotential::OEInterMolFunc2 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
    __swig_destroy__ = _oeshape.delete_OEInterMolFunc2

# Register OEInterMolFunc2 in _oeshape:
_oeshape.OEInterMolFunc2_swigregister(OEInterMolFunc2)

class OEGaussianBaseIter(object):
    r"""Proxy of C++ OESystem::OEIter< OESystem::OEGaussianBase > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEGaussianBaseIter self) -> OEGaussianBaseIter
        __init__(OEGaussianBaseIter self, OEGaussianBaseIter rhs) -> OEGaussianBaseIter
        __init__(OEGaussianBaseIter self, OESystem::OEIterBase< OESystem::OEGaussianBase > * rhs) -> OEGaussianBaseIter
        __init__(OEGaussianBaseIter self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEGaussianBase >::NonConstA > * rhs) -> OEGaussianBaseIter
        """
        _oeshape.OEGaussianBaseIter_swiginit(self, _oeshape.new_OEGaussianBaseIter(*args))
    __swig_destroy__ = _oeshape.delete_OEGaussianBaseIter

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEGaussianBase > *":
        r"""Copy(OEGaussianBaseIter self) -> OESystem::OEIterBase< OESystem::OEGaussianBase > *"""
        return _oeshape.OEGaussianBaseIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEGaussianBaseIter self, OESystem::OEIterBase< OESystem::OEGaussianBase > * ib)
        Push(OEGaussianBaseIter self, OEGaussianBaseIter iter)
        """
        return _oeshape.OEGaussianBaseIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OESystem::OEGaussianBase,OESystem::OEGaussianBase > const &") -> "void":
        r"""Sort(OEGaussianBaseIter self, OESystem::OEBinaryPredicate< OESystem::OEGaussianBase,OESystem::OEGaussianBase > const & sort_criterion)"""
        return _oeshape.OEGaussianBaseIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEGaussianBase > &":
        r"""ToFirst(OEGaussianBaseIter self) -> OEGaussianBaseIter"""
        return _oeshape.OEGaussianBaseIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OESystem::OEGaussianBase > &":
        r"""ToLast(OEGaussianBaseIter self) -> OEGaussianBaseIter"""
        return _oeshape.OEGaussianBaseIter_ToLast(self)

    def __ref__(self) -> "OESystem::OEGaussianBase &":
        r"""__ref__(OEGaussianBaseIter self) -> OESystem::OEGaussianBase &"""
        return _oeshape.OEGaussianBaseIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEGaussianBaseIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEGaussianBaseIter self) -> PyObject *"""
        return _oeshape.OEGaussianBaseIter_next(self)

    def Target(self) -> "OESystem::OEGaussianBase &":
        r"""Target(OEGaussianBaseIter self) -> OESystem::OEGaussianBase &"""
        return _oeshape.OEGaussianBaseIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEGaussianBase > &":
        r"""
        Next(OEGaussianBaseIter self) -> OEGaussianBaseIter
        Next(OEGaussianBaseIter self, int i) -> OEGaussianBaseIter
        """
        return _oeshape.OEGaussianBaseIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEGaussianBase > &":
        r"""
        Prev(OEGaussianBaseIter self) -> OEGaussianBaseIter
        Prev(OEGaussianBaseIter self, int i) -> OEGaussianBaseIter
        """
        return _oeshape.OEGaussianBaseIter_Prev(self, *args)

# Register OEGaussianBaseIter in _oeshape:
_oeshape.OEGaussianBaseIter_swigregister(OEGaussianBaseIter)

class OEShapeQueryBase(oechem.OEBase):
    r"""Proxy of C++ OEShape::OEShapeQueryBase 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
    __swig_destroy__ = _oeshape.delete_OEShapeQueryBase

    def HasMolecule(self) -> "bool":
        r"""HasMolecule(OEShapeQueryBase self) -> bool"""
        return _oeshape.OEShapeQueryBase_HasMolecule(self)

    def GetMolecule(self) -> "OEChem::OEMolBase const &":
        r"""GetMolecule(OEShapeQueryBase self) -> OEMolBase"""
        return _oeshape.OEShapeQueryBase_GetMolecule(self)

    def HasShapeGrid(self) -> "bool":
        r"""HasShapeGrid(OEShapeQueryBase self) -> bool"""
        return _oeshape.OEShapeQueryBase_HasShapeGrid(self)

    def GetShapeGrid(self) -> "OESystem::OEScalarGrid const &":
        r"""GetShapeGrid(OEShapeQueryBase self) -> OESystem::OEScalarGrid const &"""
        return _oeshape.OEShapeQueryBase_GetShapeGrid(self)

    def GetTitle(self) -> "char const *":
        r"""GetTitle(OEShapeQueryBase self) -> char const *"""
        return _oeshape.OEShapeQueryBase_GetTitle(self)

    def SetTitle(self, *args) -> "bool":
        r"""
        SetTitle(OEShapeQueryBase self, char const * argTitle) -> bool
        SetTitle(OEShapeQueryBase self, std::string const & argTitle) -> bool
        """
        return _oeshape.OEShapeQueryBase_SetTitle(self, *args)

    def IsEmpty(self) -> "bool":
        r"""IsEmpty(OEShapeQueryBase self) -> bool"""
        return _oeshape.OEShapeQueryBase_IsEmpty(self)

    def HasShape(self) -> "bool":
        r"""HasShape(OEShapeQueryBase self) -> bool"""
        return _oeshape.OEShapeQueryBase_HasShape(self)

    def HasColor(self) -> "bool":
        r"""HasColor(OEShapeQueryBase self) -> bool"""
        return _oeshape.OEShapeQueryBase_HasColor(self)

    def GetColorForceField(self) -> "OEShape::OEColorForceField const *":
        r"""GetColorForceField(OEShapeQueryBase self) -> OEColorForceField"""
        return _oeshape.OEShapeQueryBase_GetColorForceField(self)

    def GetShapeGaussians(self) -> "OESystem::OEIterBase< OESystem::OEGaussianBase const > *":
        r"""GetShapeGaussians(OEShapeQueryBase self) -> OESystem::OEIterBase< OESystem::OEGaussianBase const > *"""
        return _oeshape.OEShapeQueryBase_GetShapeGaussians(self)

    def GetColorGaussians(self) -> "OESystem::OEIterBase< OESystem::OEGaussianBase const > *":
        r"""GetColorGaussians(OEShapeQueryBase self) -> OESystem::OEIterBase< OESystem::OEGaussianBase const > *"""
        return _oeshape.OEShapeQueryBase_GetColorGaussians(self)

    def GetDataType(self) -> "void const *":
        r"""GetDataType(OEShapeQueryBase self) -> void const *"""
        return _oeshape.OEShapeQueryBase_GetDataType(self)

    def IsDataType(self, argType: "void const *") -> "bool":
        r"""IsDataType(OEShapeQueryBase self, void const * argType) -> bool"""
        return _oeshape.OEShapeQueryBase_IsDataType(self, argType)

# Register OEShapeQueryBase in _oeshape:
_oeshape.OEShapeQueryBase_swigregister(OEShapeQueryBase)

class OEShapeQuery(OEShapeQueryBase):
    r"""Proxy of C++ OEShape::OEShapeQuery class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEShapeQuery self) -> OEShapeQuery
        __init__(OEShapeQuery self, OEShapeQuery arg2) -> OEShapeQuery
        __init__(OEShapeQuery self, OEShapeQueryBase arg2) -> OEShapeQuery
        """
        _oeshape.OEShapeQuery_swiginit(self, _oeshape.new_OEShapeQuery(*args))
    __swig_destroy__ = _oeshape.delete_OEShapeQuery

    def SetTitle(self, argTitle: "char const *") -> "bool":
        r"""SetTitle(OEShapeQuery self, char const * argTitle) -> bool"""
        return _oeshape.OEShapeQuery_SetTitle(self, argTitle)

    def GetTitle(self) -> "char const *":
        r"""GetTitle(OEShapeQuery self) -> char const *"""
        return _oeshape.OEShapeQuery_GetTitle(self)

    def GetShapeGaussians(self, *args) -> "OESystem::OEIterBase< OESystem::OEGaussianBase const > *":
        r"""
        GetShapeGaussians(OEShapeQuery self) -> OESystem::OEIterBase< OESystem::OEGaussianBase >
        GetShapeGaussians(OEShapeQuery self) -> OESystem::OEIterBase< OESystem::OEGaussianBase const > *
        """
        return _oeshape.OEShapeQuery_GetShapeGaussians(self, *args)

    def AddShapeGaussian(self, gauss: "OESystem::OEGaussianBase const &") -> "void":
        r"""AddShapeGaussian(OEShapeQuery self, OESystem::OEGaussianBase const & gauss)"""
        return _oeshape.OEShapeQuery_AddShapeGaussian(self, gauss)

    def DeleteShapeGaussian(self, gauss: "OESystem::OEGaussianBase *") -> "bool":
        r"""DeleteShapeGaussian(OEShapeQuery self, OESystem::OEGaussianBase * gauss) -> bool"""
        return _oeshape.OEShapeQuery_DeleteShapeGaussian(self, gauss)

    def ClearShapeGaussians(self) -> "void":
        r"""ClearShapeGaussians(OEShapeQuery self)"""
        return _oeshape.OEShapeQuery_ClearShapeGaussians(self)

    def GetColorGaussians(self, *args) -> "OESystem::OEIterBase< OESystem::OEGaussianBase const > *":
        r"""
        GetColorGaussians(OEShapeQuery self) -> OESystem::OEIterBase< OESystem::OEGaussianBase >
        GetColorGaussians(OEShapeQuery self) -> OESystem::OEIterBase< OESystem::OEGaussianBase const > *
        """
        return _oeshape.OEShapeQuery_GetColorGaussians(self, *args)

    def AddColorGaussian(self, c: "OESystem::OEGaussianBase const &") -> "void":
        r"""AddColorGaussian(OEShapeQuery self, OESystem::OEGaussianBase const & c)"""
        return _oeshape.OEShapeQuery_AddColorGaussian(self, c)

    def DeleteColorGaussian(self, c: "OESystem::OEGaussianBase *") -> "bool":
        r"""DeleteColorGaussian(OEShapeQuery self, OESystem::OEGaussianBase * c) -> bool"""
        return _oeshape.OEShapeQuery_DeleteColorGaussian(self, c)

    def ClearColorGaussians(self) -> "void":
        r"""ClearColorGaussians(OEShapeQuery self)"""
        return _oeshape.OEShapeQuery_ClearColorGaussians(self)

    def HasMolecule(self) -> "bool":
        r"""HasMolecule(OEShapeQuery self) -> bool"""
        return _oeshape.OEShapeQuery_HasMolecule(self)

    def GetMolecule(self, *args) -> "OEChem::OEMolBase const &":
        r"""
        GetMolecule(OEShapeQuery self) -> OEMolBase
        GetMolecule(OEShapeQuery self) -> OEMolBase
        """
        return _oeshape.OEShapeQuery_GetMolecule(self, *args)

    def SetMolecule(self, arg2: "OEMolBase") -> "void":
        r"""SetMolecule(OEShapeQuery self, OEMolBase arg2)"""
        return _oeshape.OEShapeQuery_SetMolecule(self, arg2)

    def ClearMolecule(self) -> "void":
        r"""ClearMolecule(OEShapeQuery self)"""
        return _oeshape.OEShapeQuery_ClearMolecule(self)

    def HasShapeGrid(self) -> "bool":
        r"""HasShapeGrid(OEShapeQuery self) -> bool"""
        return _oeshape.OEShapeQuery_HasShapeGrid(self)

    def GetShapeGrid(self, *args) -> "OESystem::OEScalarGrid const &":
        r"""
        GetShapeGrid(OEShapeQuery self) -> OESystem::OEScalarGrid
        GetShapeGrid(OEShapeQuery self) -> OESystem::OEScalarGrid const &
        """
        return _oeshape.OEShapeQuery_GetShapeGrid(self, *args)

    def SetShapeGrid(self, g: "OESystem::OEScalarGrid const &") -> "void":
        r"""SetShapeGrid(OEShapeQuery self, OESystem::OEScalarGrid const & g)"""
        return _oeshape.OEShapeQuery_SetShapeGrid(self, g)

    def ClearShapeGrid(self) -> "void":
        r"""ClearShapeGrid(OEShapeQuery self)"""
        return _oeshape.OEShapeQuery_ClearShapeGrid(self)

    def GetColorForceField(self) -> "OEShape::OEColorForceField const *":
        r"""GetColorForceField(OEShapeQuery self) -> OEColorForceField"""
        return _oeshape.OEShapeQuery_GetColorForceField(self)

    def SetColorForceField(self, ff: "OEColorForceField") -> "void":
        r"""SetColorForceField(OEShapeQuery self, OEColorForceField ff)"""
        return _oeshape.OEShapeQuery_SetColorForceField(self, ff)

    def ClearColorForceField(self) -> "void":
        r"""ClearColorForceField(OEShapeQuery self)"""
        return _oeshape.OEShapeQuery_ClearColorForceField(self)

    def GetDataType(self) -> "void const *":
        r"""GetDataType(OEShapeQuery self) -> void const *"""
        return _oeshape.OEShapeQuery_GetDataType(self)

    def IsDataType(self, arg2: "void const *") -> "bool":
        r"""IsDataType(OEShapeQuery self, void const * arg2) -> bool"""
        return _oeshape.OEShapeQuery_IsDataType(self, arg2)

    def CreateCopy(self) -> "OESystem::OEBase *":
        r"""CreateCopy(OEShapeQuery self) -> OEBase"""
        return _oeshape.OEShapeQuery_CreateCopy(self)

# Register OEShapeQuery in _oeshape:
_oeshape.OEShapeQuery_swigregister(OEShapeQuery)


def OEMol2Query(query: "OEShapeQuery", mol: "OEMolBase", cff: "OEColorForceField") -> "bool":
    r"""OEMol2Query(OEShapeQuery query, OEMolBase mol, OEColorForceField cff) -> bool"""
    return _oeshape.OEMol2Query(query, mol, cff)
class OEShapeQueryPublic(object):
    r"""Proxy of C++ OEShape::OEShapeQueryPublic class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEShapeQueryPublic self) -> OEShapeQueryPublic
        __init__(OEShapeQueryPublic self, OEShapeQueryPublic arg2) -> OEShapeQueryPublic
        """
        _oeshape.OEShapeQueryPublic_swiginit(self, _oeshape.new_OEShapeQueryPublic(*args))
    __swig_destroy__ = _oeshape.delete_OEShapeQueryPublic

    def GetTitle(self) -> "char const *":
        r"""GetTitle(OEShapeQueryPublic self) -> char const *"""
        return _oeshape.OEShapeQueryPublic_GetTitle(self)

    def GetColorForceField(self) -> "OEShape::OEColorForceField const *":
        r"""GetColorForceField(OEShapeQueryPublic self) -> OEColorForceField"""
        return _oeshape.OEShapeQueryPublic_GetColorForceField(self)

    def IsValid(self):
      return _oeshape.OEShapeQueryPublic___nonzero__(self)



    def GetImpl(self, *args) -> "OEShape::OEShapeQuery const *":
        r"""
        GetImpl(OEShapeQueryPublic self) -> OEShapeQuery
        GetImpl(OEShapeQueryPublic self) -> OEShapeQuery
        """
        return _oeshape.OEShapeQueryPublic_GetImpl(self, *args)

# Register OEShapeQueryPublic in _oeshape:
_oeshape.OEShapeQueryPublic_swigregister(OEShapeQueryPublic)


def OEGetCenterAndExtents(*args) -> "void":
    r"""
    OEGetCenterAndExtents(OEShapeQueryBase sq, float * ctr, float * ext)
    OEGetCenterAndExtents(OEShapeQueryPublic sq, float * ctr, float * ext)
    """
    return _oeshape.OEGetCenterAndExtents(*args)

def OEReadShapeQuery(*args) -> "bool":
    r"""
    OEReadShapeQuery(char const * filename, OEShapeQueryPublic query) -> bool
    OEReadShapeQuery(oeistream ifs, OEShapeQueryPublic query) -> bool
    OEReadShapeQuery(char const * filename, OEShapeQuery query) -> bool
    OEReadShapeQuery(oeistream ifs, OEShapeQuery query) -> bool
    """
    return _oeshape.OEReadShapeQuery(*args)

def OEWriteShapeQuery(*args) -> "bool":
    r"""
    OEWriteShapeQuery(char const * filename, OEShapeQueryPublic query) -> bool
    OEWriteShapeQuery(char const * filename, OEShapeQueryBase query) -> bool
    OEWriteShapeQuery(oeostream ofs, OEShapeQueryBase query) -> bool
    """
    return _oeshape.OEWriteShapeQuery(*args)

def OEIsFastROCSShapeQuery(*args) -> "bool":
    r"""
    OEIsFastROCSShapeQuery(OEShapeQueryPublic query) -> bool
    OEIsFastROCSShapeQuery(OEShapeQuery query) -> bool
    """
    return _oeshape.OEIsFastROCSShapeQuery(*args)
class OEHermiteOptions(object):
    r"""Proxy of C++ OEShape::OEHermiteOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEHermiteOptions self) -> OEHermiteOptions
        __init__(OEHermiteOptions self, OEHermiteOptions arg2) -> OEHermiteOptions
        """
        _oeshape.OEHermiteOptions_swiginit(self, _oeshape.new_OEHermiteOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEHermiteOptions

    def SetLambdaX(self, arg2: "double") -> "void":
        r"""SetLambdaX(OEHermiteOptions self, double arg2)"""
        return _oeshape.OEHermiteOptions_SetLambdaX(self, arg2)

    def SetLambdaY(self, arg2: "double") -> "void":
        r"""SetLambdaY(OEHermiteOptions self, double arg2)"""
        return _oeshape.OEHermiteOptions_SetLambdaY(self, arg2)

    def SetLambdaZ(self, arg2: "double") -> "void":
        r"""SetLambdaZ(OEHermiteOptions self, double arg2)"""
        return _oeshape.OEHermiteOptions_SetLambdaZ(self, arg2)

    def SetNPolyMax(self, arg2: "unsigned int") -> "bool":
        r"""SetNPolyMax(OEHermiteOptions self, unsigned int arg2) -> bool"""
        return _oeshape.OEHermiteOptions_SetNPolyMax(self, arg2)

    def SetUseOptimalLambdas(self, arg2: "bool") -> "void":
        r"""SetUseOptimalLambdas(OEHermiteOptions self, bool arg2)"""
        return _oeshape.OEHermiteOptions_SetUseOptimalLambdas(self, arg2)

    def GetLambdaX(self) -> "double":
        r"""GetLambdaX(OEHermiteOptions self) -> double"""
        return _oeshape.OEHermiteOptions_GetLambdaX(self)

    def GetLambdaY(self) -> "double":
        r"""GetLambdaY(OEHermiteOptions self) -> double"""
        return _oeshape.OEHermiteOptions_GetLambdaY(self)

    def GetLambdaZ(self) -> "double":
        r"""GetLambdaZ(OEHermiteOptions self) -> double"""
        return _oeshape.OEHermiteOptions_GetLambdaZ(self)

    def GetNPolyMax(self) -> "unsigned int":
        r"""GetNPolyMax(OEHermiteOptions self) -> unsigned int"""
        return _oeshape.OEHermiteOptions_GetNPolyMax(self)

    def GetUseOptimalLambdas(self) -> "bool":
        r"""GetUseOptimalLambdas(OEHermiteOptions self) -> bool"""
        return _oeshape.OEHermiteOptions_GetUseOptimalLambdas(self)

# Register OEHermiteOptions in _oeshape:
_oeshape.OEHermiteOptions_swigregister(OEHermiteOptions)

class OEHermite(object):
    r"""Proxy of C++ OEShape::OEHermite class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEHermite self) -> OEHermite
        __init__(OEHermite self, OEHermiteOptions HermiteOptions) -> OEHermite
        __init__(OEHermite self, OEHermite arg2) -> OEHermite
        """
        _oeshape.OEHermite_swiginit(self, _oeshape.new_OEHermite(*args))
    __swig_destroy__ = _oeshape.delete_OEHermite

    def Setup(self, *args) -> "bool":
        r"""
        Setup(OEHermite self, OEMolBase mol) -> bool
        Setup(OEHermite self, OESystem::OEScalarGrid const & grid) -> bool
        Setup(OEHermite self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEHermite_Setup(self, *args)

    def GetCoefficients(self, arg2: "OEDoubleVector") -> "bool":
        r"""GetCoefficients(OEHermite self, OEDoubleVector arg2) -> bool"""
        return _oeshape.OEHermite_GetCoefficients(self, arg2)

    def GetOptions(self) -> "OEShape::OEHermiteOptions const &":
        r"""GetOptions(OEHermite self) -> OEHermiteOptions"""
        return _oeshape.OEHermite_GetOptions(self)

    def GetSelfOverlap(self) -> "double":
        r"""GetSelfOverlap(OEHermite self) -> double"""
        return _oeshape.OEHermite_GetSelfOverlap(self)

    def CreateGrid(self, *args) -> "void":
        r"""
        CreateGrid(OEHermite self, OESystem::OEScalarGrid & arg2, float const arg3)
        CreateGrid(OEHermite self, OESystem::OEScalarGrid & arg2, float const arg3, OETrans arg4)
        """
        return _oeshape.OEHermite_CreateGrid(self, *args)

# Register OEHermite in _oeshape:
_oeshape.OEHermite_swigregister(OEHermite)

class OEOverlapFuncBase(OEMolFunc1):
    r"""Proxy of C++ OEShape::OEOverlapFuncBase 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
    __swig_destroy__ = _oeshape.delete_OEOverlapFuncBase

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEOverlapFuncBase self) -> unsigned int"""
        return _oeshape.OEOverlapFuncBase_NumVar(self)

    def GetFComponents(self, argCoords: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEOverlapFuncBase self, double const * argCoords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEOverlapFuncBase_GetFComponents(self, argCoords)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEOverlapFuncBase self, OEMolBase argRefMol) -> bool
        SetupRef(OEOverlapFuncBase self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEOverlapFuncBase self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEOverlapFuncBase_SetupRef(self, *args)

    def Setup(self, argFitMol: "OEMolBase") -> "bool":
        r"""Setup(OEOverlapFuncBase self, OEMolBase argFitMol) -> bool"""
        return _oeshape.OEOverlapFuncBase_Setup(self, argFitMol)

    def SetupFlex(self, fitMol: "OEMolBase") -> "bool":
        r"""SetupFlex(OEOverlapFuncBase self, OEMolBase fitMol) -> bool"""
        return _oeshape.OEOverlapFuncBase_SetupFlex(self, fitMol)

    def GetInteractions(self, arg2: "OEMolBase", arg3: "double const *", functype: "unsigned int") -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEOverlapFuncBase self, OEMolBase arg2, double const * arg3, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *"""
        return _oeshape.OEOverlapFuncBase_GetInteractions(self, arg2, arg3, functype)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEOverlapFuncBase self, double const * argCoords, double * argGrads) -> double
        __call__(OEOverlapFuncBase self, double const * argCoords) -> double
        """
        return _oeshape.OEOverlapFuncBase___call__(self, *args)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEOverlapFuncBase self, double const * argCoords, OEOverlapResults argResults) -> bool
        Overlap(OEOverlapFuncBase self, OEMolBase argFitMol, OEOverlapResults argResults) -> bool
        """
        return _oeshape.OEOverlapFuncBase_Overlap(self, *args)

# Register OEOverlapFuncBase in _oeshape:
_oeshape.OEOverlapFuncBase_swigregister(OEOverlapFuncBase)

class OEShapeFunc(OEOverlapFuncBase):
    r"""Proxy of C++ OEShape::OEShapeFunc 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
    __swig_destroy__ = _oeshape.delete_OEShapeFunc

    def GetShapeOptions(self) -> "OEShape::OEShapeOptions const &":
        r"""GetShapeOptions(OEShapeFunc self) -> OEShapeOptions"""
        return _oeshape.OEShapeFunc_GetShapeOptions(self)

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEShapeFunc self) -> unsigned int"""
        return _oeshape.OEShapeFunc_NumVar(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEShapeFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEShapeFunc self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEShapeFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEShapeFunc_SetupRef(self, *args)

    def Setup(self, argFitMol: "OEMolBase") -> "bool":
        r"""Setup(OEShapeFunc self, OEMolBase argFitMol) -> bool"""
        return _oeshape.OEShapeFunc_Setup(self, argFitMol)

    def SetupFlex(self, fitMol: "OEMolBase") -> "bool":
        r"""SetupFlex(OEShapeFunc self, OEMolBase fitMol) -> bool"""
        return _oeshape.OEShapeFunc_SetupFlex(self, fitMol)

    def GetFComponents(self, argCoords: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEShapeFunc self, double const * argCoords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEShapeFunc_GetFComponents(self, argCoords)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEShapeFunc self, double const * argCoords, OEOverlapResults argResults) -> bool
        Overlap(OEShapeFunc self, OEMolBase argFitMol, OEOverlapResults argResults) -> bool
        """
        return _oeshape.OEShapeFunc_Overlap(self, *args)

    def GetInteractions(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEShapeFunc self, OEMolBase arg2, double const * arg3, unsigned int functype=OEFuncType::Shape) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >"""
        return _oeshape.OEShapeFunc_GetInteractions(self, *args)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEShapeFunc self, double const * argCoords, double * argGrads) -> double
        __call__(OEShapeFunc self, double const * argCoords) -> double
        """
        return _oeshape.OEShapeFunc___call__(self, *args)

# Register OEShapeFunc in _oeshape:
_oeshape.OEShapeFunc_swigregister(OEShapeFunc)

class OEExactShapeFunc(OEShapeFunc):
    r"""Proxy of C++ OEShape::OEExactShapeFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEExactShapeFunc self, OEShapeOptions argOptions=OEShape::OEShapeOptions()) -> OEExactShapeFunc
        __init__(OEExactShapeFunc self, OEExactShapeFunc argFunc) -> OEExactShapeFunc
        """
        _oeshape.OEExactShapeFunc_swiginit(self, _oeshape.new_OEExactShapeFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEExactShapeFunc

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEExactShapeFunc self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEExactShapeFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEExactShapeFunc self, OEShapeQuery argQuery) -> bool
        SetupRef(OEExactShapeFunc self, OEShapeInquiry & argQuery) -> bool
        """
        return _oeshape.OEExactShapeFunc_SetupRef(self, *args)

    def CreateCopy(self) -> "OEShape::OEExactShapeFunc *":
        r"""CreateCopy(OEExactShapeFunc self) -> OEExactShapeFunc"""
        return _oeshape.OEExactShapeFunc_CreateCopy(self)

# Register OEExactShapeFunc in _oeshape:
_oeshape.OEExactShapeFunc_swigregister(OEExactShapeFunc)

class OEGridShapeFunc(OEShapeFunc):
    r"""Proxy of C++ OEShape::OEGridShapeFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEGridShapeFunc self, OEShapeOptions argOptions=OEShape::OEShapeOptions()) -> OEGridShapeFunc
        __init__(OEGridShapeFunc self, OEShapeGridOptions argOptions) -> OEGridShapeFunc
        __init__(OEGridShapeFunc self, OEShapeOptions argShape, OEShapeGridOptions argGrid) -> OEGridShapeFunc
        __init__(OEGridShapeFunc self, OEGridShapeFunc argFunc) -> OEGridShapeFunc
        """
        _oeshape.OEGridShapeFunc_swiginit(self, _oeshape.new_OEGridShapeFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEGridShapeFunc

    def GetGridOptions(self) -> "OEShape::OEShapeGridOptions const &":
        r"""GetGridOptions(OEGridShapeFunc self) -> OEShapeGridOptions"""
        return _oeshape.OEGridShapeFunc_GetGridOptions(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEGridShapeFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEGridShapeFunc self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEGridShapeFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEGridShapeFunc_SetupRef(self, *args)

    def CreateCopy(self) -> "OEShape::OEGridShapeFunc *":
        r"""CreateCopy(OEGridShapeFunc self) -> OEGridShapeFunc"""
        return _oeshape.OEGridShapeFunc_CreateCopy(self)

# Register OEGridShapeFunc in _oeshape:
_oeshape.OEGridShapeFunc_swigregister(OEGridShapeFunc)

class OEAnalyticShapeFunc(OEShapeFunc):
    r"""Proxy of C++ OEShape::OEAnalyticShapeFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEAnalyticShapeFunc self, OEShapeOptions argOptions=OEShape::OEShapeOptions()) -> OEAnalyticShapeFunc
        __init__(OEAnalyticShapeFunc self, OEAnalyticOptions argOptions) -> OEAnalyticShapeFunc
        __init__(OEAnalyticShapeFunc self, OEShapeOptions argShape, OEAnalyticOptions argAnalytic) -> OEAnalyticShapeFunc
        __init__(OEAnalyticShapeFunc self, OEAnalyticShapeFunc argFunc) -> OEAnalyticShapeFunc
        """
        _oeshape.OEAnalyticShapeFunc_swiginit(self, _oeshape.new_OEAnalyticShapeFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEAnalyticShapeFunc

    def GetAnalyticOptions(self) -> "OEShape::OEAnalyticOptions const &":
        r"""GetAnalyticOptions(OEAnalyticShapeFunc self) -> OEAnalyticOptions"""
        return _oeshape.OEAnalyticShapeFunc_GetAnalyticOptions(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEAnalyticShapeFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEAnalyticShapeFunc self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEAnalyticShapeFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEAnalyticShapeFunc_SetupRef(self, *args)

    def CreateCopy(self) -> "OEShape::OEAnalyticShapeFunc *":
        r"""CreateCopy(OEAnalyticShapeFunc self) -> OEAnalyticShapeFunc"""
        return _oeshape.OEAnalyticShapeFunc_CreateCopy(self)

# Register OEAnalyticShapeFunc in _oeshape:
_oeshape.OEAnalyticShapeFunc_swigregister(OEAnalyticShapeFunc)

class OEHermiteShapeFunc(OEShapeFunc):
    r"""Proxy of C++ OEShape::OEHermiteShapeFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEHermiteShapeFunc self, OEShapeOptions argOptions=OEShape::OEShapeOptions()) -> OEHermiteShapeFunc
        __init__(OEHermiteShapeFunc self, OEHermiteOptions HermOptRef, OEHermiteOptions HermOptFit) -> OEHermiteShapeFunc
        __init__(OEHermiteShapeFunc self, OEShapeOptions argOptions, OEHermiteOptions HermOptRef, OEHermiteOptions HermOptFit) -> OEHermiteShapeFunc
        __init__(OEHermiteShapeFunc self, OEHermiteShapeFunc arg2) -> OEHermiteShapeFunc
        """
        _oeshape.OEHermiteShapeFunc_swiginit(self, _oeshape.new_OEHermiteShapeFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEHermiteShapeFunc

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEHermiteShapeFunc self, OEMolBase mol) -> bool
        SetupRef(OEHermiteShapeFunc self, OESystem::OEScalarGrid const & grid) -> bool
        SetupRef(OEHermiteShapeFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEHermiteShapeFunc_SetupRef(self, *args)

    def Setup(self, mol: "OEMolBase") -> "bool":
        r"""Setup(OEHermiteShapeFunc self, OEMolBase mol) -> bool"""
        return _oeshape.OEHermiteShapeFunc_Setup(self, mol)

    def GetRefHermiteOptions(self) -> "OEShape::OEHermiteOptions const &":
        r"""GetRefHermiteOptions(OEHermiteShapeFunc self) -> OEHermiteOptions"""
        return _oeshape.OEHermiteShapeFunc_GetRefHermiteOptions(self)

    def GetFitHermiteOptions(self) -> "OEShape::OEHermiteOptions const &":
        r"""GetFitHermiteOptions(OEHermiteShapeFunc self) -> OEHermiteOptions"""
        return _oeshape.OEHermiteShapeFunc_GetFitHermiteOptions(self)

    def CreateCopy(self) -> "OEShape::OEHermiteShapeFunc *":
        r"""CreateCopy(OEHermiteShapeFunc self) -> OEHermiteShapeFunc"""
        return _oeshape.OEHermiteShapeFunc_CreateCopy(self)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEHermiteShapeFunc self, double const * argCoords, OEOverlapResults argResults) -> bool
        Overlap(OEHermiteShapeFunc self, OEMolBase argFitMol, OEOverlapResults argResults) -> bool
        """
        return _oeshape.OEHermiteShapeFunc_Overlap(self, *args)

# Register OEHermiteShapeFunc in _oeshape:
_oeshape.OEHermiteShapeFunc_swigregister(OEHermiteShapeFunc)

class OEColorFunc(OEOverlapFuncBase):
    r"""Proxy of C++ OEShape::OEColorFunc 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
    __swig_destroy__ = _oeshape.delete_OEColorFunc

    def GetColorOptions(self) -> "OEShape::OEColorOptions const &":
        r"""GetColorOptions(OEColorFunc self) -> OEColorOptions"""
        return _oeshape.OEColorFunc_GetColorOptions(self)

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEColorFunc self) -> unsigned int"""
        return _oeshape.OEColorFunc_NumVar(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEColorFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEColorFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEColorFunc_SetupRef(self, *args)

    def Setup(self, argFitMol: "OEMolBase") -> "bool":
        r"""Setup(OEColorFunc self, OEMolBase argFitMol) -> bool"""
        return _oeshape.OEColorFunc_Setup(self, argFitMol)

    def SetupFlex(self, fitMol: "OEMolBase") -> "bool":
        r"""SetupFlex(OEColorFunc self, OEMolBase fitMol) -> bool"""
        return _oeshape.OEColorFunc_SetupFlex(self, fitMol)

    def GetFComponents(self, argCoords: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEColorFunc self, double const * argCoords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEColorFunc_GetFComponents(self, argCoords)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEColorFunc self, double const * argCoords, OEOverlapResults argResults) -> bool
        Overlap(OEColorFunc self, OEMolBase argFitMol, OEOverlapResults argResults) -> bool
        """
        return _oeshape.OEColorFunc_Overlap(self, *args)

    def GetInteractions(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEColorFunc self, OEMolBase arg2, double const * arg3, unsigned int functype=OEFuncType::Color) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >"""
        return _oeshape.OEColorFunc_GetInteractions(self, *args)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEColorFunc self, double const * argCoords, double * argGrads) -> double
        __call__(OEColorFunc self, double const * argCoords) -> double
        """
        return _oeshape.OEColorFunc___call__(self, *args)

# Register OEColorFunc in _oeshape:
_oeshape.OEColorFunc_swigregister(OEColorFunc)

class OEExactColorFunc(OEColorFunc):
    r"""Proxy of C++ OEShape::OEExactColorFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEExactColorFunc self, OEColorOptions argOpts=OEShape::OEColorOptions()) -> OEExactColorFunc
        __init__(OEExactColorFunc self, OEExactColorFunc argFunc) -> OEExactColorFunc
        """
        _oeshape.OEExactColorFunc_swiginit(self, _oeshape.new_OEExactColorFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEExactColorFunc

    def CreateCopy(self) -> "OEShape::OEExactColorFunc *":
        r"""CreateCopy(OEExactColorFunc self) -> OEExactColorFunc"""
        return _oeshape.OEExactColorFunc_CreateCopy(self)

# Register OEExactColorFunc in _oeshape:
_oeshape.OEExactColorFunc_swigregister(OEExactColorFunc)

class OEGridColorFunc(OEColorFunc):
    r"""Proxy of C++ OEShape::OEGridColorFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEGridColorFunc self, OEColorOptions argOptions=OEShape::OEColorOptions()) -> OEGridColorFunc
        __init__(OEGridColorFunc self, OEShapeGridOptions argOptions) -> OEGridColorFunc
        __init__(OEGridColorFunc self, OEColorOptions argColor, OEShapeGridOptions argGrid) -> OEGridColorFunc
        __init__(OEGridColorFunc self, OEGridColorFunc argFunc) -> OEGridColorFunc
        """
        _oeshape.OEGridColorFunc_swiginit(self, _oeshape.new_OEGridColorFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEGridColorFunc

    def GetGridOptions(self) -> "OEShape::OEShapeGridOptions const &":
        r"""GetGridOptions(OEGridColorFunc self) -> OEShapeGridOptions"""
        return _oeshape.OEGridColorFunc_GetGridOptions(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEGridColorFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEGridColorFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEGridColorFunc_SetupRef(self, *args)

    def CreateCopy(self) -> "OEShape::OEGridColorFunc *":
        r"""CreateCopy(OEGridColorFunc self) -> OEGridColorFunc"""
        return _oeshape.OEGridColorFunc_CreateCopy(self)

# Register OEGridColorFunc in _oeshape:
_oeshape.OEGridColorFunc_swigregister(OEGridColorFunc)

class OEAnalyticColorFunc(OEColorFunc):
    r"""Proxy of C++ OEShape::OEAnalyticColorFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEAnalyticColorFunc self, OEColorOptions argOptions=OEShape::OEColorOptions()) -> OEAnalyticColorFunc
        __init__(OEAnalyticColorFunc self, OEAnalyticOptions argOptions) -> OEAnalyticColorFunc
        __init__(OEAnalyticColorFunc self, OEColorOptions argColor, OEAnalyticOptions argAnalytic) -> OEAnalyticColorFunc
        __init__(OEAnalyticColorFunc self, OEAnalyticColorFunc argFunc) -> OEAnalyticColorFunc
        """
        _oeshape.OEAnalyticColorFunc_swiginit(self, _oeshape.new_OEAnalyticColorFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEAnalyticColorFunc

    def GetAnalyticOptions(self) -> "OEShape::OEAnalyticOptions const &":
        r"""GetAnalyticOptions(OEAnalyticColorFunc self) -> OEAnalyticOptions"""
        return _oeshape.OEAnalyticColorFunc_GetAnalyticOptions(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEAnalyticColorFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEAnalyticColorFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEAnalyticColorFunc_SetupRef(self, *args)

    def CreateCopy(self) -> "OEShape::OEAnalyticColorFunc *":
        r"""CreateCopy(OEAnalyticColorFunc self) -> OEAnalyticColorFunc"""
        return _oeshape.OEAnalyticColorFunc_CreateCopy(self)

# Register OEAnalyticColorFunc in _oeshape:
_oeshape.OEAnalyticColorFunc_swigregister(OEAnalyticColorFunc)

class OEColorResults(object):
    r"""Proxy of C++ OEShape::OEColorResults class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    colorscore = property(_oeshape.OEColorResults_colorscore_get, _oeshape.OEColorResults_colorscore_set, doc=r"""colorscore : float""")
    scaledcolor = property(_oeshape.OEColorResults_scaledcolor_get, _oeshape.OEColorResults_scaledcolor_set, doc=r"""scaledcolor : float""")
    refSelfColor = property(_oeshape.OEColorResults_refSelfColor_get, _oeshape.OEColorResults_refSelfColor_set, doc=r"""refSelfColor : float""")
    fitSelfColor = property(_oeshape.OEColorResults_fitSelfColor_get, _oeshape.OEColorResults_fitSelfColor_set, doc=r"""fitSelfColor : float""")

    def __init__(self):
        r"""__init__(OEColorResults self) -> OEColorResults"""
        _oeshape.OEColorResults_swiginit(self, _oeshape.new_OEColorResults())

    def GetTanimoto(self) -> "float":
        r"""GetTanimoto(OEColorResults self) -> float"""
        return _oeshape.OEColorResults_GetTanimoto(self)

    def GetRefTversky(self) -> "float":
        r"""GetRefTversky(OEColorResults self) -> float"""
        return _oeshape.OEColorResults_GetRefTversky(self)

    def GetFitTversky(self) -> "float":
        r"""GetFitTversky(OEColorResults self) -> float"""
        return _oeshape.OEColorResults_GetFitTversky(self)

    def GetTversky(self, alpha: "float", beta: "float") -> "float":
        r"""GetTversky(OEColorResults self, float alpha, float beta) -> float"""
        return _oeshape.OEColorResults_GetTversky(self, alpha, beta)
    __swig_destroy__ = _oeshape.delete_OEColorResults

# Register OEColorResults in _oeshape:
_oeshape.OEColorResults_swigregister(OEColorResults)


def OEAddColorAtoms(*args) -> "unsigned int":
    r"""
    OEAddColorAtoms(OEMCMolBase mol, OEColorForceField cff, bool setCachedSelfColor=False) -> unsigned int
    OEAddColorAtoms(OEMolBase mol, OEColorForceField cff, bool setCachedSelfColor=False) -> unsigned int
    """
    return _oeshape.OEAddColorAtoms(*args)

def OESetCachedSelfColor(*args) -> "bool":
    r"""
    OESetCachedSelfColor(OEMCMolBase mol, OEColorForceField cff) -> bool
    OESetCachedSelfColor(OEMolBase mol, OEColorForceField cff) -> bool
    """
    return _oeshape.OESetCachedSelfColor(*args)

def OESelfColor(mol: "OEMolBase", cff: "OEColorForceField", allcolor: "bool"=False) -> "float":
    r"""OESelfColor(OEMolBase mol, OEColorForceField cff, bool allcolor=False) -> float"""
    return _oeshape.OESelfColor(mol, cff, allcolor)
class OEColorOverlap(object):
    r"""Proxy of C++ OEShape::OEColorOverlap class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEColorOverlap self) -> OEColorOverlap
        __init__(OEColorOverlap self, OEColorOverlap rhs) -> OEColorOverlap
        """
        _oeshape.OEColorOverlap_swiginit(self, _oeshape.new_OEColorOverlap(*args))
    __swig_destroy__ = _oeshape.delete_OEColorOverlap

    def SetRefMol(self, refmol: "OEMolBase") -> "bool":
        r"""SetRefMol(OEColorOverlap self, OEMolBase refmol) -> bool"""
        return _oeshape.OEColorOverlap_SetRefMol(self, refmol)

    def SetFitMol(self, fitmol: "OEMolBase") -> "bool":
        r"""SetFitMol(OEColorOverlap self, OEMolBase fitmol) -> bool"""
        return _oeshape.OEColorOverlap_SetFitMol(self, fitmol)

    def SetColorForceField(self, *args) -> "bool":
        r"""
        SetColorForceField(OEColorOverlap self, OEColorForceField cff) -> bool
        SetColorForceField(OEColorOverlap self, std::string const & filename) -> bool
        SetColorForceField(OEColorOverlap self, oeistream ifs) -> bool
        SetColorForceField(OEColorOverlap self, unsigned int cffType) -> bool
        """
        return _oeshape.OEColorOverlap_SetColorForceField(self, *args)

    def ColorScore(self, *args) -> "bool":
        r"""
        ColorScore(OEColorOverlap self, OEMolBase fitmol, OEColorResults res) -> bool
        ColorScore(OEColorOverlap self, OEColorResults res) -> bool
        """
        return _oeshape.OEColorOverlap_ColorScore(self, *args)

    def GetSelfColor(self) -> "float":
        r"""GetSelfColor(OEColorOverlap self) -> float"""
        return _oeshape.OEColorOverlap_GetSelfColor(self)

    def SetAllColor(self, arg2: "bool") -> "void":
        r"""SetAllColor(OEColorOverlap self, bool arg2)"""
        return _oeshape.OEColorOverlap_SetAllColor(self, arg2)

    def GetAllColor(self) -> "bool":
        r"""GetAllColor(OEColorOverlap self) -> bool"""
        return _oeshape.OEColorOverlap_GetAllColor(self)

# Register OEColorOverlap in _oeshape:
_oeshape.OEColorOverlap_swigregister(OEColorOverlap)

class OEOverlapFunc(OEOverlapFuncBase):
    r"""Proxy of C++ OEShape::OEOverlapFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEOverlapFunc self, OEShapeFunc argShape=OEShape::OEGridShapeFunc(), OEColorFunc argColor=OEShape::OEExactColorFunc()) -> OEOverlapFunc
        __init__(OEOverlapFunc self, OEColorFunc argFunc) -> OEOverlapFunc
        __init__(OEOverlapFunc self, OEOverlapFunc argFunc) -> OEOverlapFunc
        """
        _oeshape.OEOverlapFunc_swiginit(self, _oeshape.new_OEOverlapFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEOverlapFunc

    def GetShapeFunc(self) -> "OEShape::OEShapeFunc const &":
        r"""GetShapeFunc(OEOverlapFunc self) -> OEShapeFunc"""
        return _oeshape.OEOverlapFunc_GetShapeFunc(self)

    def GetColorFunc(self) -> "OEShape::OEColorFunc const &":
        r"""GetColorFunc(OEOverlapFunc self) -> OEColorFunc"""
        return _oeshape.OEOverlapFunc_GetColorFunc(self)

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEOverlapFunc self) -> unsigned int"""
        return _oeshape.OEOverlapFunc_NumVar(self)

    def Setup(self, argFitMol: "OEMolBase") -> "bool":
        r"""Setup(OEOverlapFunc self, OEMolBase argFitMol) -> bool"""
        return _oeshape.OEOverlapFunc_Setup(self, argFitMol)

    def SetupFlex(self, fitMol: "OEMolBase") -> "bool":
        r"""SetupFlex(OEOverlapFunc self, OEMolBase fitMol) -> bool"""
        return _oeshape.OEOverlapFunc_SetupFlex(self, fitMol)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEOverlapFunc self, OEMolBase argRefMol) -> bool
        SetupRef(OEOverlapFunc self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEOverlapFunc self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEOverlapFunc_SetupRef(self, *args)

    def GetFComponents(self, argCoords: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEOverlapFunc self, double const * argCoords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEOverlapFunc_GetFComponents(self, argCoords)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEOverlapFunc self, double const * argCoords, OEOverlapResults argResults) -> bool
        Overlap(OEOverlapFunc self, OEMolBase argFitMol, OEOverlapResults argResults) -> bool
        """
        return _oeshape.OEOverlapFunc_Overlap(self, *args)

    def CreateCopy(self) -> "OEShape::OEOverlapFunc *":
        r"""CreateCopy(OEOverlapFunc self) -> OEOverlapFunc"""
        return _oeshape.OEOverlapFunc_CreateCopy(self)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEOverlapFunc self, double const * argCoords, double * argGrads) -> double
        __call__(OEOverlapFunc self, double const * argCoords) -> double
        """
        return _oeshape.OEOverlapFunc___call__(self, *args)

    def GetInteractions(self, *args) -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        r"""GetInteractions(OEOverlapFunc self, OEMolBase arg2, double const * arg3, unsigned int functype=OEFuncType::Shape|OEFuncType::Color) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >"""
        return _oeshape.OEOverlapFunc_GetInteractions(self, *args)

# Register OEOverlapFunc in _oeshape:
_oeshape.OEOverlapFunc_swigregister(OEOverlapFunc)

class OEOverlap(object):
    r"""Proxy of C++ OEShape::OEOverlap class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEOverlap self) -> OEOverlap
        __init__(OEOverlap self, OEMolBase refmol) -> OEOverlap
        __init__(OEOverlap self, OESystem::OEScalarGrid const & refmol) -> OEOverlap
        __init__(OEOverlap self, OEOverlap rhs) -> OEOverlap
        """
        _oeshape.OEOverlap_swiginit(self, _oeshape.new_OEOverlap(*args))
    __swig_destroy__ = _oeshape.delete_OEOverlap

    def GetCarbonRadius(self) -> "float":
        r"""GetCarbonRadius(OEOverlap self) -> float"""
        return _oeshape.OEOverlap_GetCarbonRadius(self)

    def GetGridSpacing(self) -> "float":
        r"""GetGridSpacing(OEOverlap self) -> float"""
        return _oeshape.OEOverlap_GetGridSpacing(self)

    def GetMethod(self) -> "unsigned int":
        r"""GetMethod(OEOverlap self) -> unsigned int"""
        return _oeshape.OEOverlap_GetMethod(self)

    def GetRadiiApproximation(self) -> "unsigned int":
        r"""GetRadiiApproximation(OEOverlap self) -> unsigned int"""
        return _oeshape.OEOverlap_GetRadiiApproximation(self)

    def GetUseHydrogens(self) -> "bool":
        r"""GetUseHydrogens(OEOverlap self) -> bool"""
        return _oeshape.OEOverlap_GetUseHydrogens(self)

    def SetMethod(self, m: "unsigned int") -> "bool":
        r"""SetMethod(OEOverlap self, unsigned int m) -> bool"""
        return _oeshape.OEOverlap_SetMethod(self, m)

    def SetRadiiApproximation(self, type: "unsigned int") -> "bool":
        r"""SetRadiiApproximation(OEOverlap self, unsigned int type) -> bool"""
        return _oeshape.OEOverlap_SetRadiiApproximation(self, type)

    def SetGridSpacing(self, spacing: "float") -> "bool":
        r"""SetGridSpacing(OEOverlap self, float spacing) -> bool"""
        return _oeshape.OEOverlap_SetGridSpacing(self, spacing)

    def SetCarbonRadius(self, cradius: "float") -> "bool":
        r"""SetCarbonRadius(OEOverlap self, float cradius) -> bool"""
        return _oeshape.OEOverlap_SetCarbonRadius(self, cradius)

    def SetUseHydrogens(self, state: "bool") -> "bool":
        r"""SetUseHydrogens(OEOverlap self, bool state) -> bool"""
        return _oeshape.OEOverlap_SetUseHydrogens(self, state)

    def SetRefMol(self, refmol: "OEMolBase") -> "bool":
        r"""SetRefMol(OEOverlap self, OEMolBase refmol) -> bool"""
        return _oeshape.OEOverlap_SetRefMol(self, refmol)

    def SetRefGrid(self, refgrid: "OESystem::OEScalarGrid const &") -> "bool":
        r"""SetRefGrid(OEOverlap self, OESystem::OEScalarGrid const & refgrid) -> bool"""
        return _oeshape.OEOverlap_SetRefGrid(self, refgrid)

    def SetFitMol(self, fitmol: "OEMolBase") -> "bool":
        r"""SetFitMol(OEOverlap self, OEMolBase fitmol) -> bool"""
        return _oeshape.OEOverlap_SetFitMol(self, fitmol)

    def GetHandle(self) -> "int":
        r"""GetHandle(OEOverlap self) -> int"""
        return _oeshape.OEOverlap_GetHandle(self)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEOverlap self, OEMolBase fitmol, OEOverlapResults res, float * atomOverlaps=None) -> bool
        Overlap(OEOverlap self, OEOverlapResults res, float * atomOverlaps=None) -> bool
        Overlap(OEOverlap self, OESystem::OEScalarGrid const & arg2, OEOverlapResults arg3) -> bool
        """
        return _oeshape.OEOverlap_Overlap(self, *args)

    def SetFitGrid(self, arg2: "OESystem::OEScalarGrid const &") -> "bool":
        r"""SetFitGrid(OEOverlap self, OESystem::OEScalarGrid const & arg2) -> bool"""
        return _oeshape.OEOverlap_SetFitGrid(self, arg2)

    def SetRepresentationLevel(self, arg2: "unsigned int") -> "bool":
        r"""SetRepresentationLevel(OEOverlap self, unsigned int arg2) -> bool"""
        return _oeshape.OEOverlap_SetRepresentationLevel(self, arg2)

    def GetRepresentationLevel(self) -> "unsigned int":
        r"""GetRepresentationLevel(OEOverlap self) -> unsigned int"""
        return _oeshape.OEOverlap_GetRepresentationLevel(self)

# Register OEOverlap in _oeshape:
_oeshape.OEOverlap_swigregister(OEOverlap)


def OESetCachedSelfShape(*args) -> "bool":
    r"""
    OESetCachedSelfShape(OEMCMolBase mcmol, unsigned int radiiApprox=, float cradius=1.7) -> bool
    OESetCachedSelfShape(OEMolBase mol, unsigned int radiiApprox=, float cradius=1.7) -> bool
    """
    return _oeshape.OESetCachedSelfShape(*args)

def OEHasCachedSelfShape(*args) -> "bool":
    r"""
    OEHasCachedSelfShape(OEMCMolBase mcmol, unsigned int radiiApprox=, float cradius=1.7) -> bool
    OEHasCachedSelfShape(OEMolBase mol, unsigned int radiiApprox=, float cradius=1.7) -> bool
    """
    return _oeshape.OEHasCachedSelfShape(*args)

def OEGetCachedSelfShape(*args) -> "float":
    r"""
    OEGetCachedSelfShape(OEConfBase conf, unsigned int radiiApprox=, float cradius=1.7) -> float
    OEGetCachedSelfShape(OEMolBase mol, unsigned int radiiApprox=, float cradius=1.7) -> float
    """
    return _oeshape.OEGetCachedSelfShape(*args)

def OEClearCachedSelfShape(*args) -> "void":
    r"""
    OEClearCachedSelfShape(OEMCMolBase mcmol)
    OEClearCachedSelfShape(OEMolBase mol)
    """
    return _oeshape.OEClearCachedSelfShape(*args)

def OESelfShape(*args) -> "float":
    r"""OESelfShape(OEMolBase mol, unsigned int radiiApprox=, float cradius=1.7) -> float"""
    return _oeshape.OESelfShape(*args)
class OEBestOverlay(object):
    r"""Proxy of C++ OEShape::OEBestOverlay class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEBestOverlay self) -> OEBestOverlay
        __init__(OEBestOverlay self, OEMCMolBase refmol) -> OEBestOverlay
        __init__(OEBestOverlay self, OESystem::OEScalarGrid const & refgrid, float interpolate=0.5) -> OEBestOverlay
        __init__(OEBestOverlay self, OEBestOverlay arg2) -> OEBestOverlay
        """
        _oeshape.OEBestOverlay_swiginit(self, _oeshape.new_OEBestOverlay(*args))
    __swig_destroy__ = _oeshape.delete_OEBestOverlay

    def SetRefMol(self, refmol: "OEMCMolBase") -> "bool":
        r"""SetRefMol(OEBestOverlay self, OEMCMolBase refmol) -> bool"""
        return _oeshape.OEBestOverlay_SetRefMol(self, refmol)

    def SetRefGrid(self, refgrid: "OESystem::OEScalarGrid const &", interpolate: "float"=0.5) -> "bool":
        r"""SetRefGrid(OEBestOverlay self, OESystem::OEScalarGrid const & refgrid, float interpolate=0.5) -> bool"""
        return _oeshape.OEBestOverlay_SetRefGrid(self, refgrid, interpolate)

    def SetRef(self, sq: "OEShapeQueryPublic") -> "bool":
        r"""SetRef(OEBestOverlay self, OEShapeQueryPublic sq) -> bool"""
        return _oeshape.OEBestOverlay_SetRef(self, sq)

    def GetRefMol(self) -> "OEChem::OEMCMolBase const *":
        r"""GetRefMol(OEBestOverlay self) -> OEMCMolBase"""
        return _oeshape.OEBestOverlay_GetRefMol(self)

    def GetRefGrid(self) -> "OESystem::OEScalarGrid const *":
        r"""GetRefGrid(OEBestOverlay self) -> OESystem::OEScalarGrid const *"""
        return _oeshape.OEBestOverlay_GetRefGrid(self)

    def SetColorForceField(self, *args) -> "bool":
        r"""
        SetColorForceField(OEBestOverlay self, OEColorForceField cff) -> bool
        SetColorForceField(OEBestOverlay self, unsigned int type) -> bool
        SetColorForceField(OEBestOverlay self, oeistream ifs) -> bool
        SetColorForceField(OEBestOverlay self, std::string const & filename) -> bool
        """
        return _oeshape.OEBestOverlay_SetColorForceField(self, *args)

    def SetColorOptimize(self, state: "bool") -> "void":
        r"""SetColorOptimize(OEBestOverlay self, bool state)"""
        return _oeshape.OEBestOverlay_SetColorOptimize(self, state)

    def GetColorOptimize(self) -> "bool":
        r"""GetColorOptimize(OEBestOverlay self) -> bool"""
        return _oeshape.OEBestOverlay_GetColorOptimize(self)

    def ClearColorForceField(self) -> "void":
        r"""ClearColorForceField(OEBestOverlay self)"""
        return _oeshape.OEBestOverlay_ClearColorForceField(self)

    def GetRefSelfColor(self) -> "float":
        r"""GetRefSelfColor(OEBestOverlay self) -> float"""
        return _oeshape.OEBestOverlay_GetRefSelfColor(self)

    def SetInitialOrientation(self, orient: "unsigned int") -> "void":
        r"""SetInitialOrientation(OEBestOverlay self, unsigned int orient)"""
        return _oeshape.OEBestOverlay_SetInitialOrientation(self, orient)

    def SetMinimizeType(self, type: "unsigned int") -> "void":
        r"""SetMinimizeType(OEBestOverlay self, unsigned int type)"""
        return _oeshape.OEBestOverlay_SetMinimizeType(self, type)

    def GetInitialOrientation(self) -> "unsigned int":
        r"""GetInitialOrientation(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetInitialOrientation(self)

    def GetMinimizeType(self) -> "unsigned int":
        r"""GetMinimizeType(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetMinimizeType(self)

    def SetSymmetryThreshold(self, threshold: "float") -> "void":
        r"""SetSymmetryThreshold(OEBestOverlay self, float threshold)"""
        return _oeshape.OEBestOverlay_SetSymmetryThreshold(self, threshold)

    def GetSymmetryThreshold(self) -> "float":
        r"""GetSymmetryThreshold(OEBestOverlay self) -> float"""
        return _oeshape.OEBestOverlay_GetSymmetryThreshold(self)

    def SetUserStarts(self, xyz: "float const *", nstarts: "unsigned int") -> "void":
        r"""SetUserStarts(OEBestOverlay self, float const * xyz, unsigned int nstarts)"""
        return _oeshape.OEBestOverlay_SetUserStarts(self, xyz, nstarts)

    def GetUserStarts(self, xyz: "float *") -> "bool":
        r"""GetUserStarts(OEBestOverlay self, float * xyz) -> bool"""
        return _oeshape.OEBestOverlay_GetUserStarts(self, xyz)

    def GetNumUserStarts(self) -> "unsigned int":
        r"""GetNumUserStarts(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetNumUserStarts(self)

    def ClearUserStarts(self) -> "void":
        r"""ClearUserStarts(OEBestOverlay self)"""
        return _oeshape.OEBestOverlay_ClearUserStarts(self)

    def SetNumRandomStarts(self, n: "unsigned int") -> "void":
        r"""SetNumRandomStarts(OEBestOverlay self, unsigned int n)"""
        return _oeshape.OEBestOverlay_SetNumRandomStarts(self, n)

    def SetMaxRandomTranslation(self, trans: "float") -> "void":
        r"""SetMaxRandomTranslation(OEBestOverlay self, float trans)"""
        return _oeshape.OEBestOverlay_SetMaxRandomTranslation(self, trans)

    def SetRandomSeed(self, seed: "unsigned int") -> "void":
        r"""SetRandomSeed(OEBestOverlay self, unsigned int seed)"""
        return _oeshape.OEBestOverlay_SetRandomSeed(self, seed)

    def GetNumRandomStarts(self) -> "unsigned int":
        r"""GetNumRandomStarts(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetNumRandomStarts(self)

    def GetMaxRandomTranslation(self) -> "float":
        r"""GetMaxRandomTranslation(OEBestOverlay self) -> float"""
        return _oeshape.OEBestOverlay_GetMaxRandomTranslation(self)

    def GetRandomSeed(self) -> "unsigned int":
        r"""GetRandomSeed(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetRandomSeed(self)

    def GetRefSymmetry(self, confIdx: "unsigned int") -> "unsigned int":
        r"""GetRefSymmetry(OEBestOverlay self, unsigned int confIdx) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetRefSymmetry(self, confIdx)

    def SetMethod(self, method: "unsigned int") -> "void":
        r"""SetMethod(OEBestOverlay self, unsigned int method)"""
        return _oeshape.OEBestOverlay_SetMethod(self, method)

    def SetRadiiApproximation(self, type: "unsigned int") -> "void":
        r"""SetRadiiApproximation(OEBestOverlay self, unsigned int type)"""
        return _oeshape.OEBestOverlay_SetRadiiApproximation(self, type)

    def SetCarbonRadius(self, cradius: "float") -> "void":
        r"""SetCarbonRadius(OEBestOverlay self, float cradius)"""
        return _oeshape.OEBestOverlay_SetCarbonRadius(self, cradius)

    def SetUseHydrogens(self, state: "bool") -> "void":
        r"""SetUseHydrogens(OEBestOverlay self, bool state)"""
        return _oeshape.OEBestOverlay_SetUseHydrogens(self, state)

    def GetMethod(self) -> "unsigned int":
        r"""GetMethod(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetMethod(self)

    def GetRadiiApproximation(self) -> "unsigned int":
        r"""GetRadiiApproximation(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetRadiiApproximation(self)

    def GetCarbonRadius(self) -> "float":
        r"""GetCarbonRadius(OEBestOverlay self) -> float"""
        return _oeshape.OEBestOverlay_GetCarbonRadius(self)

    def GetUseHydrogens(self) -> "bool":
        r"""GetUseHydrogens(OEBestOverlay self) -> bool"""
        return _oeshape.OEBestOverlay_GetUseHydrogens(self)

    def SetMaxOptIterations(self, argValue: "unsigned int const") -> "void":
        r"""SetMaxOptIterations(OEBestOverlay self, unsigned int const argValue)"""
        return _oeshape.OEBestOverlay_SetMaxOptIterations(self, argValue)

    def GetMaxOptIterations(self) -> "unsigned int":
        r"""GetMaxOptIterations(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetMaxOptIterations(self)

    def IsValid(self) -> "bool":
        r"""IsValid(OEBestOverlay self) -> bool"""
        return _oeshape.OEBestOverlay_IsValid(self)

    def SetAllColor(self, arg2: "bool") -> "void":
        r"""SetAllColor(OEBestOverlay self, bool arg2)"""
        return _oeshape.OEBestOverlay_SetAllColor(self, arg2)

    def GetAllColor(self) -> "bool":
        r"""GetAllColor(OEBestOverlay self) -> bool"""
        return _oeshape.OEBestOverlay_GetAllColor(self)

    def SetInertialAxialDivisions(self, arg2: "unsigned int") -> "void":
        r"""SetInertialAxialDivisions(OEBestOverlay self, unsigned int arg2)"""
        return _oeshape.OEBestOverlay_SetInertialAxialDivisions(self, arg2)

    def GetInertialAxialDivisions(self) -> "unsigned int":
        r"""GetInertialAxialDivisions(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetInertialAxialDivisions(self)

    def SetRepresentationLevel(self, arg2: "unsigned int") -> "void":
        r"""SetRepresentationLevel(OEBestOverlay self, unsigned int arg2)"""
        return _oeshape.OEBestOverlay_SetRepresentationLevel(self, arg2)

    def GetRepresentationLevel(self) -> "unsigned int":
        r"""GetRepresentationLevel(OEBestOverlay self) -> unsigned int"""
        return _oeshape.OEBestOverlay_GetRepresentationLevel(self)

    def Overlay(self, *args) -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        r"""
        Overlay(OEBestOverlay self, OEMCMolBase fitmol) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults >
        Overlay(OEBestOverlay self, OESystem::OEScalarGrid const & arg2) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults > *
        """
        return _oeshape.OEBestOverlay_Overlay(self, *args)

# Register OEBestOverlay in _oeshape:
_oeshape.OEBestOverlay_swigregister(OEBestOverlay)

class OEBestOverlayResultsIter(object):
    r"""Proxy of C++ OESystem::OEIter< OEShape::OEBestOverlayResults > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEBestOverlayResultsIter self) -> OEBestOverlayResultsIter
        __init__(OEBestOverlayResultsIter self, OEBestOverlayResultsIter rhs) -> OEBestOverlayResultsIter
        __init__(OEBestOverlayResultsIter self, OESystem::OEIterBase< OEShape::OEBestOverlayResults > * rhs) -> OEBestOverlayResultsIter
        __init__(OEBestOverlayResultsIter self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEBestOverlayResults >::NonConstA > * rhs) -> OEBestOverlayResultsIter
        """
        _oeshape.OEBestOverlayResultsIter_swiginit(self, _oeshape.new_OEBestOverlayResultsIter(*args))
    __swig_destroy__ = _oeshape.delete_OEBestOverlayResultsIter

    def Copy(self) -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        r"""Copy(OEBestOverlayResultsIter self) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults > *"""
        return _oeshape.OEBestOverlayResultsIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEBestOverlayResultsIter self, OESystem::OEIterBase< OEShape::OEBestOverlayResults > * ib)
        Push(OEBestOverlayResultsIter self, OEBestOverlayResultsIter iter)
        """
        return _oeshape.OEBestOverlayResultsIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OEShape::OEBestOverlayResults,OEShape::OEBestOverlayResults > const &") -> "void":
        r"""Sort(OEBestOverlayResultsIter self, OESystem::OEBinaryPredicate< OEShape::OEBestOverlayResults,OEShape::OEBestOverlayResults > const & sort_criterion)"""
        return _oeshape.OEBestOverlayResultsIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OEShape::OEBestOverlayResults > &":
        r"""ToFirst(OEBestOverlayResultsIter self) -> OEBestOverlayResultsIter"""
        return _oeshape.OEBestOverlayResultsIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OEShape::OEBestOverlayResults > &":
        r"""ToLast(OEBestOverlayResultsIter self) -> OEBestOverlayResultsIter"""
        return _oeshape.OEBestOverlayResultsIter_ToLast(self)

    def __ref__(self) -> "OEShape::OEBestOverlayResults &":
        r"""__ref__(OEBestOverlayResultsIter self) -> OEBestOverlayResults"""
        return _oeshape.OEBestOverlayResultsIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEBestOverlayResultsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEBestOverlayResultsIter self) -> PyObject *"""
        return _oeshape.OEBestOverlayResultsIter_next(self)

    def Target(self) -> "OEShape::OEBestOverlayResults &":
        r"""Target(OEBestOverlayResultsIter self) -> OEBestOverlayResults"""
        return _oeshape.OEBestOverlayResultsIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OEShape::OEBestOverlayResults > &":
        r"""
        Next(OEBestOverlayResultsIter self) -> OEBestOverlayResultsIter
        Next(OEBestOverlayResultsIter self, int i) -> OEBestOverlayResultsIter
        """
        return _oeshape.OEBestOverlayResultsIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OEShape::OEBestOverlayResults > &":
        r"""
        Prev(OEBestOverlayResultsIter self) -> OEBestOverlayResultsIter
        Prev(OEBestOverlayResultsIter self, int i) -> OEBestOverlayResultsIter
        """
        return _oeshape.OEBestOverlayResultsIter_Prev(self, *args)

# Register OEBestOverlayResultsIter in _oeshape:
_oeshape.OEBestOverlayResultsIter_swigregister(OEBestOverlayResultsIter)

class OEBestOverlayScoreIter(object):
    r"""Proxy of C++ OESystem::OEIter< OEShape::OEBestOverlayScore > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEBestOverlayScoreIter self) -> OEBestOverlayScoreIter
        __init__(OEBestOverlayScoreIter self, OEBestOverlayScoreIter rhs) -> OEBestOverlayScoreIter
        __init__(OEBestOverlayScoreIter self, OESystem::OEIterBase< OEShape::OEBestOverlayScore > * rhs) -> OEBestOverlayScoreIter
        __init__(OEBestOverlayScoreIter self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEBestOverlayScore >::NonConstA > * rhs) -> OEBestOverlayScoreIter
        """
        _oeshape.OEBestOverlayScoreIter_swiginit(self, _oeshape.new_OEBestOverlayScoreIter(*args))
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScoreIter

    def Copy(self) -> "OESystem::OEIterBase< OEShape::OEBestOverlayScore > *":
        r"""Copy(OEBestOverlayScoreIter self) -> OESystem::OEIterBase< OEShape::OEBestOverlayScore > *"""
        return _oeshape.OEBestOverlayScoreIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEBestOverlayScoreIter self, OESystem::OEIterBase< OEShape::OEBestOverlayScore > * ib)
        Push(OEBestOverlayScoreIter self, OEBestOverlayScoreIter iter)
        """
        return _oeshape.OEBestOverlayScoreIter_Push(self, *args)

    def Sort(self, sort_criterion: "OEBestOverlayScoreSorterPred") -> "void":
        r"""Sort(OEBestOverlayScoreIter self, OEBestOverlayScoreSorterPred sort_criterion)"""
        return _oeshape.OEBestOverlayScoreIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OEShape::OEBestOverlayScore > &":
        r"""ToFirst(OEBestOverlayScoreIter self) -> OEBestOverlayScoreIter"""
        return _oeshape.OEBestOverlayScoreIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OEShape::OEBestOverlayScore > &":
        r"""ToLast(OEBestOverlayScoreIter self) -> OEBestOverlayScoreIter"""
        return _oeshape.OEBestOverlayScoreIter_ToLast(self)

    def __ref__(self) -> "OEShape::OEBestOverlayScore &":
        r"""__ref__(OEBestOverlayScoreIter self) -> OEBestOverlayScore"""
        return _oeshape.OEBestOverlayScoreIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEBestOverlayScoreIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEBestOverlayScoreIter self) -> PyObject *"""
        return _oeshape.OEBestOverlayScoreIter_next(self)

    def Target(self) -> "OEShape::OEBestOverlayScore &":
        r"""Target(OEBestOverlayScoreIter self) -> OEBestOverlayScore"""
        return _oeshape.OEBestOverlayScoreIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OEShape::OEBestOverlayScore > &":
        r"""
        Next(OEBestOverlayScoreIter self) -> OEBestOverlayScoreIter
        Next(OEBestOverlayScoreIter self, int i) -> OEBestOverlayScoreIter
        """
        return _oeshape.OEBestOverlayScoreIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OEShape::OEBestOverlayScore > &":
        r"""
        Prev(OEBestOverlayScoreIter self) -> OEBestOverlayScoreIter
        Prev(OEBestOverlayScoreIter self, int i) -> OEBestOverlayScoreIter
        """
        return _oeshape.OEBestOverlayScoreIter_Prev(self, *args)

# Register OEBestOverlayScoreIter in _oeshape:
_oeshape.OEBestOverlayScoreIter_swigregister(OEBestOverlayScoreIter)

class OEBestOverlayScoreSorterFunc(object):
    r"""Proxy of C++ OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool > 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
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScoreSorterFunc

    def __call__(self, a1: "OEBestOverlayScore", a2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEBestOverlayScoreSorterFunc self, OEBestOverlayScore a1, OEBestOverlayScore a2) -> bool"""
        return _oeshape.OEBestOverlayScoreSorterFunc___call__(self, a1, a2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool >::base_type *":
        r"""CreateCopy(OEBestOverlayScoreSorterFunc self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEBestOverlayScoreSorterFunc_CreateCopy(self)

# Register OEBestOverlayScoreSorterFunc in _oeshape:
_oeshape.OEBestOverlayScoreSorterFunc_swigregister(OEBestOverlayScoreSorterFunc)

class OEBestOverlayScoreCutoffFunc(object):
    r"""Proxy of C++ OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool > 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
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScoreCutoffFunc

    def __call__(self, arg2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEBestOverlayScoreCutoffFunc self, OEBestOverlayScore arg2) -> bool"""
        return _oeshape.OEBestOverlayScoreCutoffFunc___call__(self, arg2)

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool >::base_type *":
        r"""CreateCopy(OEBestOverlayScoreCutoffFunc self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEBestOverlayScoreCutoffFunc_CreateCopy(self)

# Register OEBestOverlayScoreCutoffFunc in _oeshape:
_oeshape.OEBestOverlayScoreCutoffFunc_swigregister(OEBestOverlayScoreCutoffFunc)

class OEBestOverlayScoreSorterPred(OEBestOverlayScoreSorterFunc):
    r"""Proxy of C++ OESystem::OEBinaryPredicate< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore > class."""

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

    def __call__(self, a1: "OEBestOverlayScore", a2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEBestOverlayScoreSorterPred self, OEBestOverlayScore a1, OEBestOverlayScore a2) -> bool"""
        return _oeshape.OEBestOverlayScoreSorterPred___call__(self, a1, a2)

    def CreateCopy(self) -> "OESystem::OEBinaryPredicate< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore >::base_type *":
        r"""CreateCopy(OEBestOverlayScoreSorterPred self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEBestOverlayScoreSorterPred_CreateCopy(self)

    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore > *":
        r"""CreatePredicateCopy(OEBestOverlayScoreSorterPred self) -> OEBestOverlayScoreSorterPred"""
        return _oeshape.OEBestOverlayScoreSorterPred_CreatePredicateCopy(self)

    def __init__(self, *args):
        r"""
        __init__(OEBestOverlayScoreSorterPred self) -> OEBestOverlayScoreSorterPred
        __init__(OEBestOverlayScoreSorterPred self, OEBestOverlayScoreSorterPred arg2) -> OEBestOverlayScoreSorterPred
        """
        if self.__class__ == OEBestOverlayScoreSorterPred:
            _self = None
        else:
            _self = self
        _oeshape.OEBestOverlayScoreSorterPred_swiginit(self, _oeshape.new_OEBestOverlayScoreSorterPred(_self, *args))
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScoreSorterPred
    def __disown__(self):
        self.this.disown()
        _oeshape.disown_OEBestOverlayScoreSorterPred(self)
        return weakref.proxy(self)

# Register OEBestOverlayScoreSorterPred in _oeshape:
_oeshape.OEBestOverlayScoreSorterPred_swigregister(OEBestOverlayScoreSorterPred)

class OEOverlayScoreCutoffPred(OEBestOverlayScoreCutoffFunc):
    r"""Proxy of C++ OESystem::OEUnaryPredicate< OEShape::OEBestOverlayScore > class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _oeshape.delete_OEOverlayScoreCutoffPred

    def __call__(self, a: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEOverlayScoreCutoffPred self, OEBestOverlayScore a) -> bool"""
        return _oeshape.OEOverlayScoreCutoffPred___call__(self, a)

    def CreateCopy(self) -> "OESystem::OEUnaryPredicate< OEShape::OEBestOverlayScore >::base_type *":
        r"""CreateCopy(OEOverlayScoreCutoffPred self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEOverlayScoreCutoffPred_CreateCopy(self)

    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEShape::OEBestOverlayScore > *":
        r"""CreatePredicateCopy(OEOverlayScoreCutoffPred self) -> OEOverlayScoreCutoffPred"""
        return _oeshape.OEOverlayScoreCutoffPred_CreatePredicateCopy(self)

    def __init__(self, *args):
        r"""
        __init__(OEOverlayScoreCutoffPred self) -> OEOverlayScoreCutoffPred
        __init__(OEOverlayScoreCutoffPred self, OEOverlayScoreCutoffPred arg2) -> OEOverlayScoreCutoffPred
        """
        if self.__class__ == OEOverlayScoreCutoffPred:
            _self = None
        else:
            _self = self
        _oeshape.OEOverlayScoreCutoffPred_swiginit(self, _oeshape.new_OEOverlayScoreCutoffPred(_self, *args))
    def __disown__(self):
        self.this.disown()
        _oeshape.disown_OEOverlayScoreCutoffPred(self)
        return weakref.proxy(self)

# Register OEOverlayScoreCutoffPred in _oeshape:
_oeshape.OEOverlayScoreCutoffPred_swigregister(OEOverlayScoreCutoffPred)

class OEHighestTanimoto(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestTanimoto class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestTanimoto self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestTanimoto___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestTanimoto self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestTanimoto_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestTanimoto self) -> OEHighestTanimoto"""
        _oeshape.OEHighestTanimoto_swiginit(self, _oeshape.new_OEHighestTanimoto())
    __swig_destroy__ = _oeshape.delete_OEHighestTanimoto

# Register OEHighestTanimoto in _oeshape:
_oeshape.OEHighestTanimoto_swigregister(OEHighestTanimoto)

class OEHighestOverlap(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestOverlap class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestOverlap self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestOverlap___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestOverlap self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestOverlap_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestOverlap self) -> OEHighestOverlap"""
        _oeshape.OEHighestOverlap_swiginit(self, _oeshape.new_OEHighestOverlap())
    __swig_destroy__ = _oeshape.delete_OEHighestOverlap

# Register OEHighestOverlap in _oeshape:
_oeshape.OEHighestOverlap_swigregister(OEHighestOverlap)

class OEHighestRefTversky(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestRefTversky class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestRefTversky self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestRefTversky___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestRefTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestRefTversky_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestRefTversky self) -> OEHighestRefTversky"""
        _oeshape.OEHighestRefTversky_swiginit(self, _oeshape.new_OEHighestRefTversky())
    __swig_destroy__ = _oeshape.delete_OEHighestRefTversky

# Register OEHighestRefTversky in _oeshape:
_oeshape.OEHighestRefTversky_swigregister(OEHighestRefTversky)

class OEHighestFitTversky(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestFitTversky class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestFitTversky self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestFitTversky___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestFitTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestFitTversky_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestFitTversky self) -> OEHighestFitTversky"""
        _oeshape.OEHighestFitTversky_swiginit(self, _oeshape.new_OEHighestFitTversky())
    __swig_destroy__ = _oeshape.delete_OEHighestFitTversky

# Register OEHighestFitTversky in _oeshape:
_oeshape.OEHighestFitTversky_swigregister(OEHighestFitTversky)

class OEHighestScaledColor(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestScaledColor class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestScaledColor self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestScaledColor___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestScaledColor self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestScaledColor_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestScaledColor self) -> OEHighestScaledColor"""
        _oeshape.OEHighestScaledColor_swiginit(self, _oeshape.new_OEHighestScaledColor())
    __swig_destroy__ = _oeshape.delete_OEHighestScaledColor

# Register OEHighestScaledColor in _oeshape:
_oeshape.OEHighestScaledColor_swigregister(OEHighestScaledColor)

class OEHighestColorTanimoto(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestColorTanimoto class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestColorTanimoto self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestColorTanimoto___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestColorTanimoto self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestColorTanimoto_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestColorTanimoto self) -> OEHighestColorTanimoto"""
        _oeshape.OEHighestColorTanimoto_swiginit(self, _oeshape.new_OEHighestColorTanimoto())
    __swig_destroy__ = _oeshape.delete_OEHighestColorTanimoto

# Register OEHighestColorTanimoto in _oeshape:
_oeshape.OEHighestColorTanimoto_swigregister(OEHighestColorTanimoto)

class OEHighestRefColorTversky(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestRefColorTversky class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestRefColorTversky self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestRefColorTversky___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestRefColorTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestRefColorTversky_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestRefColorTversky self) -> OEHighestRefColorTversky"""
        _oeshape.OEHighestRefColorTversky_swiginit(self, _oeshape.new_OEHighestRefColorTversky())
    __swig_destroy__ = _oeshape.delete_OEHighestRefColorTversky

# Register OEHighestRefColorTversky in _oeshape:
_oeshape.OEHighestRefColorTversky_swigregister(OEHighestRefColorTversky)

class OEHighestFitColorTversky(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestFitColorTversky class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestFitColorTversky self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestFitColorTversky___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestFitColorTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestFitColorTversky_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestFitColorTversky self) -> OEHighestFitColorTversky"""
        _oeshape.OEHighestFitColorTversky_swiginit(self, _oeshape.new_OEHighestFitColorTversky())
    __swig_destroy__ = _oeshape.delete_OEHighestFitColorTversky

# Register OEHighestFitColorTversky in _oeshape:
_oeshape.OEHighestFitColorTversky_swigregister(OEHighestFitColorTversky)

class OEHighestComboScore(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestComboScore class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestComboScore self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestComboScore___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestComboScore self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestComboScore_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestComboScore self) -> OEHighestComboScore"""
        _oeshape.OEHighestComboScore_swiginit(self, _oeshape.new_OEHighestComboScore())
    __swig_destroy__ = _oeshape.delete_OEHighestComboScore

# Register OEHighestComboScore in _oeshape:
_oeshape.OEHighestComboScore_swigregister(OEHighestComboScore)

class OEHighestTanimotoCombo(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestTanimotoCombo class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestTanimotoCombo self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestTanimotoCombo___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestTanimotoCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestTanimotoCombo_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestTanimotoCombo self) -> OEHighestTanimotoCombo"""
        _oeshape.OEHighestTanimotoCombo_swiginit(self, _oeshape.new_OEHighestTanimotoCombo())
    __swig_destroy__ = _oeshape.delete_OEHighestTanimotoCombo

# Register OEHighestTanimotoCombo in _oeshape:
_oeshape.OEHighestTanimotoCombo_swigregister(OEHighestTanimotoCombo)

class OEHighestRefTverskyCombo(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestRefTverskyCombo class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestRefTverskyCombo self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestRefTverskyCombo___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestRefTverskyCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestRefTverskyCombo_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestRefTverskyCombo self) -> OEHighestRefTverskyCombo"""
        _oeshape.OEHighestRefTverskyCombo_swiginit(self, _oeshape.new_OEHighestRefTverskyCombo())
    __swig_destroy__ = _oeshape.delete_OEHighestRefTverskyCombo

# Register OEHighestRefTverskyCombo in _oeshape:
_oeshape.OEHighestRefTverskyCombo_swigregister(OEHighestRefTverskyCombo)

class OEHighestFitTverskyCombo(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestFitTverskyCombo class."""

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

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestFitTverskyCombo self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestFitTverskyCombo___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestFitTverskyCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestFitTverskyCombo_CreateCopy(self)

    def __init__(self):
        r"""__init__(OEHighestFitTverskyCombo self) -> OEHighestFitTverskyCombo"""
        _oeshape.OEHighestFitTverskyCombo_swiginit(self, _oeshape.new_OEHighestFitTverskyCombo())
    __swig_destroy__ = _oeshape.delete_OEHighestFitTverskyCombo

# Register OEHighestFitTverskyCombo in _oeshape:
_oeshape.OEHighestFitTverskyCombo_swigregister(OEHighestFitTverskyCombo)

class OEHighestTverskyCombo(OEBestOverlayScoreSorterPred):
    r"""Proxy of C++ OEShape::OEHighestTverskyCombo class."""

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

    def __init__(self, alpha: "float const"):
        r"""__init__(OEHighestTverskyCombo self, float const alpha) -> OEHighestTverskyCombo"""
        _oeshape.OEHighestTverskyCombo_swiginit(self, _oeshape.new_OEHighestTverskyCombo(alpha))

    def __call__(self, s1: "OEBestOverlayScore", s2: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEHighestTverskyCombo self, OEBestOverlayScore s1, OEBestOverlayScore s2) -> bool"""
        return _oeshape.OEHighestTverskyCombo___call__(self, s1, s2)

    def CreateCopy(self) -> "OESystem::OEBinaryFunction< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEHighestTverskyCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestTverskyCombo_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OEHighestTverskyCombo

# Register OEHighestTverskyCombo in _oeshape:
_oeshape.OEHighestTverskyCombo_swigregister(OEHighestTverskyCombo)

class OEOverlayScoreCutoff(OEOverlayScoreCutoffPred):
    r"""Proxy of C++ OEShape::OEOverlayScoreCutoff class."""

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

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

    def __call__(self, score: "OEBestOverlayScore") -> "bool":
        r"""__call__(OEOverlayScoreCutoff self, OEBestOverlayScore score) -> bool"""
        return _oeshape.OEOverlayScoreCutoff___call__(self, score)
    __swig_destroy__ = _oeshape.delete_OEOverlayScoreCutoff

# Register OEOverlayScoreCutoff in _oeshape:
_oeshape.OEOverlayScoreCutoff_swigregister(OEOverlayScoreCutoff)

class OETanimotoComboCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OETanimotoComboCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OETanimotoComboCutoff self, double const argCutoff) -> OETanimotoComboCutoff"""
        _oeshape.OETanimotoComboCutoff_swiginit(self, _oeshape.new_OETanimotoComboCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OETanimotoComboCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OETanimotoComboCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OETanimotoComboCutoff

# Register OETanimotoComboCutoff in _oeshape:
_oeshape.OETanimotoComboCutoff_swigregister(OETanimotoComboCutoff)

class OETanimotoCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OETanimotoCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OETanimotoCutoff self, double const argCutoff) -> OETanimotoCutoff"""
        _oeshape.OETanimotoCutoff_swiginit(self, _oeshape.new_OETanimotoCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OETanimotoCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OETanimotoCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OETanimotoCutoff

# Register OETanimotoCutoff in _oeshape:
_oeshape.OETanimotoCutoff_swigregister(OETanimotoCutoff)

class OEOverlapCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OEOverlapCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OEOverlapCutoff self, double const argCutoff) -> OEOverlapCutoff"""
        _oeshape.OEOverlapCutoff_swiginit(self, _oeshape.new_OEOverlapCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEOverlapCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEOverlapCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OEOverlapCutoff

# Register OEOverlapCutoff in _oeshape:
_oeshape.OEOverlapCutoff_swigregister(OEOverlapCutoff)

class OERefTverskyCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OERefTverskyCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OERefTverskyCutoff self, double const argCutoff) -> OERefTverskyCutoff"""
        _oeshape.OERefTverskyCutoff_swiginit(self, _oeshape.new_OERefTverskyCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OERefTverskyCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OERefTverskyCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OERefTverskyCutoff

# Register OERefTverskyCutoff in _oeshape:
_oeshape.OERefTverskyCutoff_swigregister(OERefTverskyCutoff)

class OEFitTverskyCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OEFitTverskyCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OEFitTverskyCutoff self, double const argCutoff) -> OEFitTverskyCutoff"""
        _oeshape.OEFitTverskyCutoff_swiginit(self, _oeshape.new_OEFitTverskyCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEFitTverskyCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEFitTverskyCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OEFitTverskyCutoff

# Register OEFitTverskyCutoff in _oeshape:
_oeshape.OEFitTverskyCutoff_swigregister(OEFitTverskyCutoff)

class OEColorTanimotoCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OEColorTanimotoCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OEColorTanimotoCutoff self, double const argCutoff) -> OEColorTanimotoCutoff"""
        _oeshape.OEColorTanimotoCutoff_swiginit(self, _oeshape.new_OEColorTanimotoCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEColorTanimotoCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEColorTanimotoCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OEColorTanimotoCutoff

# Register OEColorTanimotoCutoff in _oeshape:
_oeshape.OEColorTanimotoCutoff_swigregister(OEColorTanimotoCutoff)

class OERefColorTverskyCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OERefColorTverskyCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OERefColorTverskyCutoff self, double const argCutoff) -> OERefColorTverskyCutoff"""
        _oeshape.OERefColorTverskyCutoff_swiginit(self, _oeshape.new_OERefColorTverskyCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OERefColorTverskyCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OERefColorTverskyCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OERefColorTverskyCutoff

# Register OERefColorTverskyCutoff in _oeshape:
_oeshape.OERefColorTverskyCutoff_swigregister(OERefColorTverskyCutoff)

class OEFitColorTverskyCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OEFitColorTverskyCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OEFitColorTverskyCutoff self, double const argCutoff) -> OEFitColorTverskyCutoff"""
        _oeshape.OEFitColorTverskyCutoff_swiginit(self, _oeshape.new_OEFitColorTverskyCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEFitColorTverskyCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEFitColorTverskyCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OEFitColorTverskyCutoff

# Register OEFitColorTverskyCutoff in _oeshape:
_oeshape.OEFitColorTverskyCutoff_swigregister(OEFitColorTverskyCutoff)

class OERefTverskyComboCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OERefTverskyComboCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OERefTverskyComboCutoff self, double const argCutoff) -> OERefTverskyComboCutoff"""
        _oeshape.OERefTverskyComboCutoff_swiginit(self, _oeshape.new_OERefTverskyComboCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OERefTverskyComboCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OERefTverskyComboCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OERefTverskyComboCutoff

# Register OERefTverskyComboCutoff in _oeshape:
_oeshape.OERefTverskyComboCutoff_swigregister(OERefTverskyComboCutoff)

class OEFitTverskyComboCutoff(OEOverlayScoreCutoff):
    r"""Proxy of C++ OEShape::OEFitTverskyComboCutoff class."""

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

    def __init__(self, argCutoff: "double const"):
        r"""__init__(OEFitTverskyComboCutoff self, double const argCutoff) -> OEFitTverskyComboCutoff"""
        _oeshape.OEFitTverskyComboCutoff_swiginit(self, _oeshape.new_OEFitTverskyComboCutoff(argCutoff))

    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEShape::OEBestOverlayScore,bool,true,true > *":
        r"""CreateCopy(OEFitTverskyComboCutoff self) -> OEBestOverlayScoreCutoffFunc"""
        return _oeshape.OEFitTverskyComboCutoff_CreateCopy(self)
    __swig_destroy__ = _oeshape.delete_OEFitTverskyComboCutoff

# Register OEFitTverskyComboCutoff in _oeshape:
_oeshape.OEFitTverskyComboCutoff_swigregister(OEFitTverskyComboCutoff)


def OECalcVolume(mol: "OEMolBase", useHydrogens: "bool"=True) -> "float":
    r"""OECalcVolume(OEMolBase mol, bool useHydrogens=True) -> float"""
    return _oeshape.OECalcVolume(mol, useHydrogens)

def OECalcShapeMultipoles(*args) -> "PyObject *":
    r"""OECalcShapeMultipoles(OEMolBase mol, unsigned int type=OEOverlapRepresentation::Atoms, bool useH=False) -> PyObject"""
    return _oeshape.OECalcShapeMultipoles(*args)
class OEStarts(object):
    r"""Proxy of C++ OEShape::OEStarts 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
    __swig_destroy__ = _oeshape.delete_OEStarts

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEStarts self, unsigned int const argSymmetry) -> bool
        SetupRef(OEStarts self, OEMolBase argRefMol, unsigned int const argSymmetry) -> bool
        """
        return _oeshape.OEStarts_SetupRef(self, *args)

    def Setup(self, argFitMol: "OEMolBase", argTrans: "OETrans") -> "unsigned int":
        r"""Setup(OEStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OEStarts_Setup(self, argFitMol, argTrans)

    def GetStarts(self, argQuats: "double *") -> "bool":
        r"""GetStarts(OEStarts self, double * argQuats) -> bool"""
        return _oeshape.OEStarts_GetStarts(self, argQuats)

    def GetNumOfStarts(self) -> "unsigned int":
        r"""GetNumOfStarts(OEStarts self) -> unsigned int"""
        return _oeshape.OEStarts_GetNumOfStarts(self)

    def CreateCopy(self) -> "OEShape::OEStarts *":
        r"""CreateCopy(OEStarts self) -> OEStarts"""
        return _oeshape.OEStarts_CreateCopy(self)

# Register OEStarts in _oeshape:
_oeshape.OEStarts_swigregister(OEStarts)

class OEInertialStarts(OEStarts):
    r"""Proxy of C++ OEShape::OEInertialStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEInertialStarts self) -> OEInertialStarts
        __init__(OEInertialStarts self, OEInertialStarts argStarts) -> OEInertialStarts
        """
        _oeshape.OEInertialStarts_swiginit(self, _oeshape.new_OEInertialStarts(*args))
    __swig_destroy__ = _oeshape.delete_OEInertialStarts

    def Setup(self, argFitMol: "OEMolBase", argTrans: "OETrans") -> "unsigned int":
        r"""Setup(OEInertialStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OEInertialStarts_Setup(self, argFitMol, argTrans)

    def CreateCopy(self) -> "OEShape::OEInertialStarts *":
        r"""CreateCopy(OEInertialStarts self) -> OEInertialStarts"""
        return _oeshape.OEInertialStarts_CreateCopy(self)

    def SetSymmetryThreshold(self, argThreshold: "double const") -> "void":
        r"""SetSymmetryThreshold(OEInertialStarts self, double const argThreshold)"""
        return _oeshape.OEInertialStarts_SetSymmetryThreshold(self, argThreshold)

    def GetSymmetryThreshold(self) -> "double":
        r"""GetSymmetryThreshold(OEInertialStarts self) -> double"""
        return _oeshape.OEInertialStarts_GetSymmetryThreshold(self)

# Register OEInertialStarts in _oeshape:
_oeshape.OEInertialStarts_swigregister(OEInertialStarts)

class OEAtAtomStarts(OEInertialStarts):
    r"""Proxy of C++ OEShape::OEAtAtomStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEAtAtomStarts self, OEUnaryAtomPred argPredicate=OEChem::OEIsHeavy()) -> OEAtAtomStarts
        __init__(OEAtAtomStarts self, OEAtAtomStarts argStarts) -> OEAtAtomStarts
        """
        _oeshape.OEAtAtomStarts_swiginit(self, _oeshape.new_OEAtAtomStarts(*args))
    __swig_destroy__ = _oeshape.delete_OEAtAtomStarts

    def SetupRef(self, argRefMol: "OEMolBase", argSymmetry: "unsigned int const") -> "bool":
        r"""SetupRef(OEAtAtomStarts self, OEMolBase argRefMol, unsigned int const argSymmetry) -> bool"""
        return _oeshape.OEAtAtomStarts_SetupRef(self, argRefMol, argSymmetry)

    def CreateCopy(self) -> "OEShape::OEAtAtomStarts *":
        r"""CreateCopy(OEAtAtomStarts self) -> OEAtAtomStarts"""
        return _oeshape.OEAtAtomStarts_CreateCopy(self)

# Register OEAtAtomStarts in _oeshape:
_oeshape.OEAtAtomStarts_swigregister(OEAtAtomStarts)

class OERandomStarts(OEInertialStarts):
    r"""Proxy of C++ OEShape::OERandomStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OERandomStarts self) -> OERandomStarts
        __init__(OERandomStarts self, OERandomStarts argStarts) -> OERandomStarts
        """
        _oeshape.OERandomStarts_swiginit(self, _oeshape.new_OERandomStarts(*args))
    __swig_destroy__ = _oeshape.delete_OERandomStarts

    def Setup(self, argFitMol: "OEMolBase", argTrans: "OETrans") -> "unsigned int":
        r"""Setup(OERandomStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OERandomStarts_Setup(self, argFitMol, argTrans)

    def SetNumRandomStarts(self, argNumStarts: "unsigned int const") -> "void":
        r"""SetNumRandomStarts(OERandomStarts self, unsigned int const argNumStarts)"""
        return _oeshape.OERandomStarts_SetNumRandomStarts(self, argNumStarts)

    def GetNumRandomStarts(self) -> "unsigned int":
        r"""GetNumRandomStarts(OERandomStarts self) -> unsigned int"""
        return _oeshape.OERandomStarts_GetNumRandomStarts(self)

    def SetMaxRandomTranslation(self, argTrans: "double const") -> "void":
        r"""SetMaxRandomTranslation(OERandomStarts self, double const argTrans)"""
        return _oeshape.OERandomStarts_SetMaxRandomTranslation(self, argTrans)

    def GetMaxRandomTranslation(self) -> "double":
        r"""GetMaxRandomTranslation(OERandomStarts self) -> double"""
        return _oeshape.OERandomStarts_GetMaxRandomTranslation(self)

    def SetRandomSeed(self, argSeed: "unsigned int const") -> "void":
        r"""SetRandomSeed(OERandomStarts self, unsigned int const argSeed)"""
        return _oeshape.OERandomStarts_SetRandomSeed(self, argSeed)

    def GetRandomSeed(self) -> "unsigned int":
        r"""GetRandomSeed(OERandomStarts self) -> unsigned int"""
        return _oeshape.OERandomStarts_GetRandomSeed(self)

    def CreateCopy(self) -> "OEShape::OERandomStarts *":
        r"""CreateCopy(OERandomStarts self) -> OERandomStarts"""
        return _oeshape.OERandomStarts_CreateCopy(self)

# Register OERandomStarts in _oeshape:
_oeshape.OERandomStarts_swigregister(OERandomStarts)

class OECartesianStarts(OEInertialStarts):
    r"""Proxy of C++ OEShape::OECartesianStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OECartesianStarts self) -> OECartesianStarts
        __init__(OECartesianStarts self, OECartesianStarts argStarts) -> OECartesianStarts
        """
        _oeshape.OECartesianStarts_swiginit(self, _oeshape.new_OECartesianStarts(*args))
    __swig_destroy__ = _oeshape.delete_OECartesianStarts

    def SetStartPoints(self, argPoints: "double const *", argNumPoints: "unsigned int") -> "void":
        r"""SetStartPoints(OECartesianStarts self, double const * argPoints, unsigned int argNumPoints)"""
        return _oeshape.OECartesianStarts_SetStartPoints(self, argPoints, argNumPoints)

    def GetStartPoints(self, argPoints: "double *") -> "bool":
        r"""GetStartPoints(OECartesianStarts self, double * argPoints) -> bool"""
        return _oeshape.OECartesianStarts_GetStartPoints(self, argPoints)

    def ClearStartPoints(self) -> "void":
        r"""ClearStartPoints(OECartesianStarts self)"""
        return _oeshape.OECartesianStarts_ClearStartPoints(self)

    def GetNumStartPoints(self) -> "unsigned int":
        r"""GetNumStartPoints(OECartesianStarts self) -> unsigned int"""
        return _oeshape.OECartesianStarts_GetNumStartPoints(self)

    def CreateCopy(self) -> "OEShape::OECartesianStarts *":
        r"""CreateCopy(OECartesianStarts self) -> OECartesianStarts"""
        return _oeshape.OECartesianStarts_CreateCopy(self)

# Register OECartesianStarts in _oeshape:
_oeshape.OECartesianStarts_swigregister(OECartesianStarts)

class OEQuatStarts(OEInertialStarts):
    r"""Proxy of C++ OEShape::OEQuatStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEQuatStarts self) -> OEQuatStarts
        __init__(OEQuatStarts self, OEQuatStarts argStarts) -> OEQuatStarts
        """
        _oeshape.OEQuatStarts_swiginit(self, _oeshape.new_OEQuatStarts(*args))
    __swig_destroy__ = _oeshape.delete_OEQuatStarts

    def Setup(self, argFitMol: "OEMolBase", argTrans: "OETrans") -> "unsigned int":
        r"""Setup(OEQuatStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OEQuatStarts_Setup(self, argFitMol, argTrans)

    def SetStarts(self, argQuats: "double const *", argNumStarts: "unsigned int") -> "void":
        r"""SetStarts(OEQuatStarts self, double const * argQuats, unsigned int argNumStarts)"""
        return _oeshape.OEQuatStarts_SetStarts(self, argQuats, argNumStarts)

    def ClearStarts(self) -> "void":
        r"""ClearStarts(OEQuatStarts self)"""
        return _oeshape.OEQuatStarts_ClearStarts(self)

    def CreateCopy(self) -> "OEShape::OEQuatStarts *":
        r"""CreateCopy(OEQuatStarts self) -> OEQuatStarts"""
        return _oeshape.OEQuatStarts_CreateCopy(self)

# Register OEQuatStarts in _oeshape:
_oeshape.OEQuatStarts_swigregister(OEQuatStarts)

class OEAsIsStarts(OEStarts):
    r"""Proxy of C++ OEShape::OEAsIsStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEAsIsStarts self) -> OEAsIsStarts
        __init__(OEAsIsStarts self, OEAsIsStarts argStarts) -> OEAsIsStarts
        """
        _oeshape.OEAsIsStarts_swiginit(self, _oeshape.new_OEAsIsStarts(*args))
    __swig_destroy__ = _oeshape.delete_OEAsIsStarts

    def Setup(self, argFitMol: "OEMolBase", argTrans: "OETrans") -> "unsigned int":
        r"""Setup(OEAsIsStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OEAsIsStarts_Setup(self, argFitMol, argTrans)

    def CreateCopy(self) -> "OEShape::OEAsIsStarts *":
        r"""CreateCopy(OEAsIsStarts self) -> OEAsIsStarts"""
        return _oeshape.OEAsIsStarts_CreateCopy(self)

# Register OEAsIsStarts in _oeshape:
_oeshape.OEAsIsStarts_swigregister(OEAsIsStarts)

class OESubrocsStarts(OEInertialStarts):
    r"""Proxy of C++ OEShape::OESubrocsStarts class."""

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

    def __init__(self, *args):
        r"""
        __init__(OESubrocsStarts self) -> OESubrocsStarts
        __init__(OESubrocsStarts self, OESubrocsStarts argStarts) -> OESubrocsStarts
        """
        _oeshape.OESubrocsStarts_swiginit(self, _oeshape.new_OESubrocsStarts(*args))
    __swig_destroy__ = _oeshape.delete_OESubrocsStarts

    def SetupRef(self, argRefMol: "OEMolBase", argSymmetry: "unsigned int const") -> "bool":
        r"""SetupRef(OESubrocsStarts self, OEMolBase argRefMol, unsigned int const argSymmetry) -> bool"""
        return _oeshape.OESubrocsStarts_SetupRef(self, argRefMol, argSymmetry)

    def Setup(self, argFitMol: "OEMolBase", argTrans: "OETrans") -> "unsigned int":
        r"""Setup(OESubrocsStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OESubrocsStarts_Setup(self, argFitMol, argTrans)

    def CreateCopy(self) -> "OEShape::OESubrocsStarts *":
        r"""CreateCopy(OESubrocsStarts self) -> OESubrocsStarts"""
        return _oeshape.OESubrocsStarts_CreateCopy(self)

# Register OESubrocsStarts in _oeshape:
_oeshape.OESubrocsStarts_swigregister(OESubrocsStarts)

class OEOverlayOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEOverlayOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEOverlayOptions self) -> OEOverlayOptions
        __init__(OEOverlayOptions self, OEOverlayOptions argOptions) -> OEOverlayOptions
        """
        _oeshape.OEOverlayOptions_swiginit(self, _oeshape.new_OEOverlayOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEOverlayOptions

    def GetMaxOptSteps(self) -> "unsigned int":
        r"""GetMaxOptSteps(OEOverlayOptions self) -> unsigned int"""
        return _oeshape.OEOverlayOptions_GetMaxOptSteps(self)

    def SetMaxOptSteps(self, value: "unsigned int const") -> "bool":
        r"""SetMaxOptSteps(OEOverlayOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEOverlayOptions_SetMaxOptSteps(self, value)

    def GetShapeFuncType(self) -> "unsigned int":
        r"""GetShapeFuncType(OEOverlayOptions self) -> unsigned int"""
        return _oeshape.OEOverlayOptions_GetShapeFuncType(self)

    def SetShapeFuncType(self, value: "unsigned int const") -> "bool":
        r"""SetShapeFuncType(OEOverlayOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEOverlayOptions_SetShapeFuncType(self, value)

    def GetColorFuncType(self) -> "unsigned int":
        r"""GetColorFuncType(OEOverlayOptions self) -> unsigned int"""
        return _oeshape.OEOverlayOptions_GetColorFuncType(self)

    def SetColorFuncType(self, value: "unsigned int const") -> "bool":
        r"""SetColorFuncType(OEOverlayOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEOverlayOptions_SetColorFuncType(self, value)

    def SetShapeOptions(self, opts: "OEShapeOptions") -> "void":
        r"""SetShapeOptions(OEOverlayOptions self, OEShapeOptions opts)"""
        return _oeshape.OEOverlayOptions_SetShapeOptions(self, opts)

    def GetShapeOptions(self, *args) -> "OEShape::OEShapeOptions const &":
        r"""
        GetShapeOptions(OEOverlayOptions self) -> OEShapeOptions
        GetShapeOptions(OEOverlayOptions self) -> OEShapeOptions
        """
        return _oeshape.OEOverlayOptions_GetShapeOptions(self, *args)

    def SetColorOptions(self, opts: "OEColorOptions") -> "void":
        r"""SetColorOptions(OEOverlayOptions self, OEColorOptions opts)"""
        return _oeshape.OEOverlayOptions_SetColorOptions(self, opts)

    def GetColorOptions(self, *args) -> "OEShape::OEColorOptions const &":
        r"""
        GetColorOptions(OEOverlayOptions self) -> OEColorOptions
        GetColorOptions(OEOverlayOptions self) -> OEColorOptions
        """
        return _oeshape.OEOverlayOptions_GetColorOptions(self, *args)

    def SetOverlapFunc(self, func: "OEOverlapFuncBase") -> "bool":
        r"""SetOverlapFunc(OEOverlayOptions self, OEOverlapFuncBase func) -> bool"""
        return _oeshape.OEOverlayOptions_SetOverlapFunc(self, func)

    def GetOverlapFunc(self) -> "OEShape::OEOverlapFuncBase const &":
        r"""GetOverlapFunc(OEOverlayOptions self) -> OEOverlapFuncBase"""
        return _oeshape.OEOverlayOptions_GetOverlapFunc(self)

    def SetStarts(self, argStarts: "OEStarts") -> "void":
        r"""SetStarts(OEOverlayOptions self, OEStarts argStarts)"""
        return _oeshape.OEOverlayOptions_SetStarts(self, argStarts)

    def GetStarts(self) -> "OEShape::OEStarts const &":
        r"""GetStarts(OEOverlayOptions self) -> OEStarts"""
        return _oeshape.OEOverlayOptions_GetStarts(self)

    def CreateCopy(self) -> "OEShape::OEOverlayOptions *":
        r"""CreateCopy(OEOverlayOptions self) -> OEOverlayOptions"""
        return _oeshape.OEOverlayOptions_CreateCopy(self)

# Register OEOverlayOptions in _oeshape:
_oeshape.OEOverlayOptions_swigregister(OEOverlayOptions)

class OEOverlay(object):
    r"""Proxy of C++ OEShape::OEOverlay class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEOverlay self, OEOverlayOptions opts=OEShape::OEOverlayOptions()) -> OEOverlay
        __init__(OEOverlay self, OEOverlay arg2) -> OEOverlay
        """
        _oeshape.OEOverlay_swiginit(self, _oeshape.new_OEOverlay(*args))
    __swig_destroy__ = _oeshape.delete_OEOverlay

    def GetOverlayOptions(self) -> "OEShape::OEOverlayOptions const &":
        r"""GetOverlayOptions(OEOverlay self) -> OEOverlayOptions"""
        return _oeshape.OEOverlay_GetOverlayOptions(self)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEOverlay self, OEMolBase argRefMol) -> bool
        SetupRef(OEOverlay self, OESystem::OEScalarGrid const & argRefGrid) -> bool
        SetupRef(OEOverlay self, OEShapeQuery argQuery) -> bool
        """
        return _oeshape.OEOverlay_SetupRef(self, *args)

    def Overlay(self, fitMol: "OEMCMolBase") -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        r"""Overlay(OEOverlay self, OEMCMolBase fitMol) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults > *"""
        return _oeshape.OEOverlay_Overlay(self, fitMol)

    def SortedOverlay(self, *args) -> "OESystem::OEIterBase< OEShape::OEBestOverlayScore > *":
        r"""SortedOverlay(OEOverlay self, OEMCMolBase fitmol, unsigned int const maxHits, OEBestOverlayScoreSorterPred pred=OEShape::OEHighestTanimotoCombo()) -> OESystem::OEIterBase< OEShape::OEBestOverlayScore >"""
        return _oeshape.OEOverlay_SortedOverlay(self, *args)

    def BestOverlay(self, *args) -> "bool":
        r"""BestOverlay(OEOverlay self, OEBestOverlayScore score, OEMCMolBase fitMol, OEBestOverlayScoreSorterPred pred=OEShape::OEHighestTanimotoCombo()) -> bool"""
        return _oeshape.OEOverlay_BestOverlay(self, *args)

# Register OEOverlay in _oeshape:
_oeshape.OEOverlay_swigregister(OEOverlay)

class OEMultiRefOverlay(object):
    r"""Proxy of C++ OEShape::OEMultiRefOverlay class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEMultiRefOverlay self, OEOverlayOptions argOptions=OEShape::OEOverlayOptions()) -> OEMultiRefOverlay
        __init__(OEMultiRefOverlay self, OEMultiRefOverlay argOverlay) -> OEMultiRefOverlay
        """
        _oeshape.OEMultiRefOverlay_swiginit(self, _oeshape.new_OEMultiRefOverlay(*args))
    __swig_destroy__ = _oeshape.delete_OEMultiRefOverlay

    def GetOverlayOptions(self) -> "OEShape::OEOverlayOptions const &":
        r"""GetOverlayOptions(OEMultiRefOverlay self) -> OEOverlayOptions"""
        return _oeshape.OEMultiRefOverlay_GetOverlayOptions(self)

    def SetupRef(self, argRefMol: "OEMCMolBase") -> "bool":
        r"""SetupRef(OEMultiRefOverlay self, OEMCMolBase argRefMol) -> bool"""
        return _oeshape.OEMultiRefOverlay_SetupRef(self, argRefMol)

    def Overlay(self, argFitMol: "OEMCMolBase") -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        r"""Overlay(OEMultiRefOverlay self, OEMCMolBase argFitMol) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults > *"""
        return _oeshape.OEMultiRefOverlay_Overlay(self, argFitMol)

    def BestOverlay(self, *args) -> "bool":
        r"""BestOverlay(OEMultiRefOverlay self, OEBestOverlayScore argScore, OEMCMolBase argFitMol, OEBestOverlayScoreSorterPred argPred=OEShape::OEHighestTanimotoCombo()) -> bool"""
        return _oeshape.OEMultiRefOverlay_BestOverlay(self, *args)

# Register OEMultiRefOverlay in _oeshape:
_oeshape.OEMultiRefOverlay_swigregister(OEMultiRefOverlay)


def OEGetMomentsOfInertiaTransform(*args) -> "unsigned int":
    r"""
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OEMolBase argMol, double const argThreshold=0.15) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OESystem::OEScalarGrid const & argGrid, double const argThreshold=0.15) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OEShapeQuery argQuery, double const argThreshold=0.15) -> unsigned int
    """
    return _oeshape.OEGetMomentsOfInertiaTransform(*args)

def OEOrientByMomentsOfInertia(*args) -> "unsigned int":
    r"""
    OEOrientByMomentsOfInertia(OEMolBase argMol, OETrans argTransform, double const argThreshold=0.15) -> unsigned int
    OEOrientByMomentsOfInertia(OESystem::OEScalarGrid & argGrid, OETrans argTransform, double const argThreshold=0.15) -> unsigned int
    OEOrientByMomentsOfInertia(OEShapeQuery argQuery, OETrans argTransform, double const argThreshold=0.15) -> unsigned int
    """
    return _oeshape.OEOrientByMomentsOfInertia(*args)
class OEROCSResultIter(object):
    r"""Proxy of C++ OESystem::OEIter< OEShape::OEROCSResult > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEROCSResultIter self) -> OEROCSResultIter
        __init__(OEROCSResultIter self, OEROCSResultIter rhs) -> OEROCSResultIter
        __init__(OEROCSResultIter self, OESystem::OEIterBase< OEShape::OEROCSResult > * rhs) -> OEROCSResultIter
        __init__(OEROCSResultIter self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEROCSResult >::NonConstA > * rhs) -> OEROCSResultIter
        """
        _oeshape.OEROCSResultIter_swiginit(self, _oeshape.new_OEROCSResultIter(*args))
    __swig_destroy__ = _oeshape.delete_OEROCSResultIter

    def Copy(self) -> "OESystem::OEIterBase< OEShape::OEROCSResult > *":
        r"""Copy(OEROCSResultIter self) -> OESystem::OEIterBase< OEShape::OEROCSResult > *"""
        return _oeshape.OEROCSResultIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEROCSResultIter self, OESystem::OEIterBase< OEShape::OEROCSResult > * ib)
        Push(OEROCSResultIter self, OEROCSResultIter iter)
        """
        return _oeshape.OEROCSResultIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OEShape::OEROCSResult,OEShape::OEROCSResult > const &") -> "void":
        r"""Sort(OEROCSResultIter self, OESystem::OEBinaryPredicate< OEShape::OEROCSResult,OEShape::OEROCSResult > const & sort_criterion)"""
        return _oeshape.OEROCSResultIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        r"""ToFirst(OEROCSResultIter self) -> OEROCSResultIter"""
        return _oeshape.OEROCSResultIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        r"""ToLast(OEROCSResultIter self) -> OEROCSResultIter"""
        return _oeshape.OEROCSResultIter_ToLast(self)

    def __ref__(self) -> "OEShape::OEROCSResult &":
        r"""__ref__(OEROCSResultIter self) -> OEROCSResult"""
        return _oeshape.OEROCSResultIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEROCSResultIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEROCSResultIter self) -> PyObject *"""
        return _oeshape.OEROCSResultIter_next(self)

    def Target(self) -> "OEShape::OEROCSResult &":
        r"""Target(OEROCSResultIter self) -> OEROCSResult"""
        return _oeshape.OEROCSResultIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        r"""
        Next(OEROCSResultIter self) -> OEROCSResultIter
        Next(OEROCSResultIter self, int i) -> OEROCSResultIter
        """
        return _oeshape.OEROCSResultIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        r"""
        Prev(OEROCSResultIter self) -> OEROCSResultIter
        Prev(OEROCSResultIter self, int i) -> OEROCSResultIter
        """
        return _oeshape.OEROCSResultIter_Prev(self, *args)

# Register OEROCSResultIter in _oeshape:
_oeshape.OEROCSResultIter_swigregister(OEROCSResultIter)

class OEROCSOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEROCSOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEROCSOptions self) -> OEROCSOptions
        __init__(OEROCSOptions self, OEROCSOptions argRocs) -> OEROCSOptions
        """
        _oeshape.OEROCSOptions_swiginit(self, _oeshape.new_OEROCSOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEROCSOptions

    def GetPerformPrep(self) -> "bool":
        r"""GetPerformPrep(OEROCSOptions self) -> bool"""
        return _oeshape.OEROCSOptions_GetPerformPrep(self)

    def SetPerformPrep(self, value: "bool const") -> "bool":
        r"""SetPerformPrep(OEROCSOptions self, bool const value) -> bool"""
        return _oeshape.OEROCSOptions_SetPerformPrep(self, value)

    def GetUseMaxHits(self) -> "bool":
        r"""GetUseMaxHits(OEROCSOptions self) -> bool"""
        return _oeshape.OEROCSOptions_GetUseMaxHits(self)

    def SetUseMaxHits(self, value: "bool const") -> "bool":
        r"""SetUseMaxHits(OEROCSOptions self, bool const value) -> bool"""
        return _oeshape.OEROCSOptions_SetUseMaxHits(self, value)

    def GetMaxHits(self) -> "unsigned int":
        r"""GetMaxHits(OEROCSOptions self) -> unsigned int"""
        return _oeshape.OEROCSOptions_GetMaxHits(self)

    def SetMaxHits(self, value: "unsigned int const") -> "bool":
        r"""SetMaxHits(OEROCSOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEROCSOptions_SetMaxHits(self, value)

    def GetNumBestHits(self) -> "unsigned int":
        r"""GetNumBestHits(OEROCSOptions self) -> unsigned int"""
        return _oeshape.OEROCSOptions_GetNumBestHits(self)

    def SetNumBestHits(self, value: "unsigned int const") -> "bool":
        r"""SetNumBestHits(OEROCSOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEROCSOptions_SetNumBestHits(self, value)

    def GetConfsPerHit(self) -> "unsigned int":
        r"""GetConfsPerHit(OEROCSOptions self) -> unsigned int"""
        return _oeshape.OEROCSOptions_GetConfsPerHit(self)

    def SetConfsPerHit(self, value: "unsigned int const") -> "bool":
        r"""SetConfsPerHit(OEROCSOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEROCSOptions_SetConfsPerHit(self, value)

    def SetOverlayOptions(self, opts: "OEOverlayOptions") -> "void":
        r"""SetOverlayOptions(OEROCSOptions self, OEOverlayOptions opts)"""
        return _oeshape.OEROCSOptions_SetOverlayOptions(self, opts)

    def GetOverlayOptions(self, *args) -> "OEShape::OEOverlayOptions const &":
        r"""
        GetOverlayOptions(OEROCSOptions self) -> OEOverlayOptions
        GetOverlayOptions(OEROCSOptions self) -> OEOverlayOptions
        """
        return _oeshape.OEROCSOptions_GetOverlayOptions(self, *args)

    def SetRankPredicate(self, argPred: "OEBestOverlayScoreSorterPred") -> "void":
        r"""SetRankPredicate(OEROCSOptions self, OEBestOverlayScoreSorterPred argPred)"""
        return _oeshape.OEROCSOptions_SetRankPredicate(self, argPred)

    def GetRankPredicate(self) -> "OESystem::OEBinaryPredicate< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore > const &":
        r"""GetRankPredicate(OEROCSOptions self) -> OEBestOverlayScoreSorterPred"""
        return _oeshape.OEROCSOptions_GetRankPredicate(self)

    def AddCutoff(self, argPred: "OEOverlayScoreCutoffPred") -> "void":
        r"""AddCutoff(OEROCSOptions self, OEOverlayScoreCutoffPred argPred)"""
        return _oeshape.OEROCSOptions_AddCutoff(self, argPred)

    def ClearCutoffs(self) -> "void":
        r"""ClearCutoffs(OEROCSOptions self)"""
        return _oeshape.OEROCSOptions_ClearCutoffs(self)

    def HasCutoff(self) -> "bool":
        r"""HasCutoff(OEROCSOptions self) -> bool"""
        return _oeshape.OEROCSOptions_HasCutoff(self)

    def MeetsCutoff(self, argScore: "OEBestOverlayScore") -> "bool":
        r"""MeetsCutoff(OEROCSOptions self, OEBestOverlayScore argScore) -> bool"""
        return _oeshape.OEROCSOptions_MeetsCutoff(self, argScore)

    def CreateCopy(self) -> "OEShape::OEROCSOptions *":
        r"""CreateCopy(OEROCSOptions self) -> OEROCSOptions"""
        return _oeshape.OEROCSOptions_CreateCopy(self)

# Register OEROCSOptions in _oeshape:
_oeshape.OEROCSOptions_swigregister(OEROCSOptions)

class OEROCSScore(OEBestOverlayScore):
    r"""Proxy of C++ OEShape::OEROCSScore class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    m_nFitMolIdx = property(_oeshape.OEROCSScore_m_nFitMolIdx_get, _oeshape.OEROCSScore_m_nFitMolIdx_set, doc=r"""m_nFitMolIdx : unsigned int""")
    m_nAscIdx = property(_oeshape.OEROCSScore_m_nAscIdx_get, _oeshape.OEROCSScore_m_nAscIdx_set, doc=r"""m_nAscIdx : unsigned int""")

    def __init__(self, *args):
        r"""
        __init__(OEROCSScore self, OEBestOverlayScore argScore, unsigned int const argFitIdx) -> OEROCSScore
        __init__(OEROCSScore self, OEROCSScore argScore) -> OEROCSScore
        """
        _oeshape.OEROCSScore_swiginit(self, _oeshape.new_OEROCSScore(*args))
    __swig_destroy__ = _oeshape.delete_OEROCSScore

# Register OEROCSScore in _oeshape:
_oeshape.OEROCSScore_swigregister(OEROCSScore)

class OEROCSResult(OEBestOverlayScore):
    r"""Proxy of C++ OEShape::OEROCSResult class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEROCSResult self) -> OEROCSResult
        __init__(OEROCSResult self, OEBestOverlayScore argScore, OEMCMolBase argFitMol) -> OEROCSResult
        __init__(OEROCSResult self, OEROCSResult argResult) -> OEROCSResult
        """
        _oeshape.OEROCSResult_swiginit(self, _oeshape.new_OEROCSResult(*args))
    __swig_destroy__ = _oeshape.delete_OEROCSResult

    def AddScore(self, argScore: "OEBestOverlayScore", argFitMol: "OEMCMolBase") -> "void":
        r"""AddScore(OEROCSResult self, OEBestOverlayScore argScore, OEMCMolBase argFitMol)"""
        return _oeshape.OEROCSResult_AddScore(self, argScore, argFitMol)

    def GetOverlayConf(self) -> "OEChem::OEMolBase const &":
        r"""GetOverlayConf(OEROCSResult self) -> OEMolBase"""
        return _oeshape.OEROCSResult_GetOverlayConf(self)

    def GetOverlayConfs(self) -> "OEChem::OEMCMolBase const &":
        r"""GetOverlayConfs(OEROCSResult self) -> OEMCMolBase"""
        return _oeshape.OEROCSResult_GetOverlayConfs(self)

# Register OEROCSResult in _oeshape:
_oeshape.OEROCSResult_swigregister(OEROCSResult)

class OEROCS(object):
    r"""Proxy of C++ OEShape::OEROCS class."""

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

    def __init__(self, *args):
        r"""__init__(OEROCS self, OEROCSOptions argOptions=OEShape::OEROCSOptions()) -> OEROCS"""
        _oeshape.OEROCS_swiginit(self, _oeshape.new_OEROCS(*args))
    __swig_destroy__ = _oeshape.delete_OEROCS

    def GetROCSOptions(self) -> "OEShape::OEROCSOptions const &":
        r"""GetROCSOptions(OEROCS self) -> OEROCSOptions"""
        return _oeshape.OEROCS_GetROCSOptions(self)

    def SetDatabase(self, *args) -> "bool":
        r"""
        SetDatabase(OEROCS self, OEMolDatabase argDatabase) -> bool
        SetDatabase(OEROCS self, oemolistream argStream) -> bool
        """
        return _oeshape.OEROCS_SetDatabase(self, *args)

    def AddMolecule(self, argMol: "OEMCMolBase") -> "unsigned int":
        r"""AddMolecule(OEROCS self, OEMCMolBase argMol) -> unsigned int"""
        return _oeshape.OEROCS_AddMolecule(self, argMol)

    def ClearMolecules(self) -> "void":
        r"""ClearMolecules(OEROCS self)"""
        return _oeshape.OEROCS_ClearMolecules(self)

    def Overlay(self, *args) -> "OESystem::OEIterBase< OEShape::OEROCSResult > *":
        r"""
        Overlay(OEROCS self, OEMolBase argRefMol) -> OESystem::OEIterBase< OEShape::OEROCSResult >
        Overlay(OEROCS self, OEMCMolBase argRefMol) -> OESystem::OEIterBase< OEShape::OEROCSResult >
        Overlay(OEROCS self, OESystem::OEScalarGrid const & argRefGrid) -> OESystem::OEIterBase< OEShape::OEROCSResult >
        Overlay(OEROCS self, OEShapeQuery argQuery) -> OESystem::OEIterBase< OEShape::OEROCSResult > *
        """
        return _oeshape.OEROCS_Overlay(self, *args)

# Register OEROCS in _oeshape:
_oeshape.OEROCS_swigregister(OEROCS)


def OEROCSOverlay(*args) -> "bool":
    r"""
    OEROCSOverlay(OEROCSResult argResult, OEMCMolBase argQuery, OEMCMolBase argFitMol, OEROCSOptions argOptions=OEShape::OEROCSOptions()) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMolBase argQuery, OEMCMolBase argFitMol, OEROCSOptions argOptions=OEShape::OEROCSOptions()) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMolBase argQuery, OEMolBase argFitMol, OEROCSOptions argOptions=OEShape::OEROCSOptions()) -> bool
    """
    return _oeshape.OEROCSOverlay(*args)
class OEFlexiOverlapResultsIter(object):
    r"""Proxy of C++ OESystem::OEIter< OEShape::OEFlexiOverlapResults > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResultsIter
        __init__(OEFlexiOverlapResultsIter self, OEFlexiOverlapResultsIter rhs) -> OEFlexiOverlapResultsIter
        __init__(OEFlexiOverlapResultsIter self, OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > * rhs) -> OEFlexiOverlapResultsIter
        __init__(OEFlexiOverlapResultsIter self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEFlexiOverlapResults >::NonConstA > * rhs) -> OEFlexiOverlapResultsIter
        """
        _oeshape.OEFlexiOverlapResultsIter_swiginit(self, _oeshape.new_OEFlexiOverlapResultsIter(*args))
    __swig_destroy__ = _oeshape.delete_OEFlexiOverlapResultsIter

    def Copy(self) -> "OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > *":
        r"""Copy(OEFlexiOverlapResultsIter self) -> OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > *"""
        return _oeshape.OEFlexiOverlapResultsIter_Copy(self)

    def Push(self, *args) -> "void":
        r"""
        Push(OEFlexiOverlapResultsIter self, OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > * ib)
        Push(OEFlexiOverlapResultsIter self, OEFlexiOverlapResultsIter iter)
        """
        return _oeshape.OEFlexiOverlapResultsIter_Push(self, *args)

    def Sort(self, sort_criterion: "OESystem::OEBinaryPredicate< OEShape::OEFlexiOverlapResults,OEShape::OEFlexiOverlapResults > const &") -> "void":
        r"""Sort(OEFlexiOverlapResultsIter self, OESystem::OEBinaryPredicate< OEShape::OEFlexiOverlapResults,OEShape::OEFlexiOverlapResults > const & sort_criterion)"""
        return _oeshape.OEFlexiOverlapResultsIter_Sort(self, sort_criterion)

    def ToFirst(self) -> "OESystem::OEIter< OEShape::OEFlexiOverlapResults > &":
        r"""ToFirst(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResultsIter"""
        return _oeshape.OEFlexiOverlapResultsIter_ToFirst(self)

    def ToLast(self) -> "OESystem::OEIter< OEShape::OEFlexiOverlapResults > &":
        r"""ToLast(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResultsIter"""
        return _oeshape.OEFlexiOverlapResultsIter_ToLast(self)

    def __ref__(self) -> "OEShape::OEFlexiOverlapResults &":
        r"""__ref__(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResults"""
        return _oeshape.OEFlexiOverlapResultsIter___ref__(self)

    def IsValid(self):
      return _oeshape.OEFlexiOverlapResultsIter___nonzero__(self)



    def __iter__(self):
        while self.IsValid():
            ret = self.Target()
            ret._itr = self
            yield ret
            self.Next()



    def next(self) -> "PyObject *":
        r"""next(OEFlexiOverlapResultsIter self) -> PyObject *"""
        return _oeshape.OEFlexiOverlapResultsIter_next(self)

    def Target(self) -> "OEShape::OEFlexiOverlapResults &":
        r"""Target(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResults"""
        return _oeshape.OEFlexiOverlapResultsIter_Target(self)

    def Next(self, *args) -> "OESystem::OEIter< OEShape::OEFlexiOverlapResults > &":
        r"""
        Next(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResultsIter
        Next(OEFlexiOverlapResultsIter self, int i) -> OEFlexiOverlapResultsIter
        """
        return _oeshape.OEFlexiOverlapResultsIter_Next(self, *args)

    def Prev(self, *args) -> "OESystem::OEIter< OEShape::OEFlexiOverlapResults > &":
        r"""
        Prev(OEFlexiOverlapResultsIter self) -> OEFlexiOverlapResultsIter
        Prev(OEFlexiOverlapResultsIter self, int i) -> OEFlexiOverlapResultsIter
        """
        return _oeshape.OEFlexiOverlapResultsIter_Prev(self, *args)

# Register OEFlexiOverlapResultsIter in _oeshape:
_oeshape.OEFlexiOverlapResultsIter_swigregister(OEFlexiOverlapResultsIter)

class OEFlexiOverlapOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEFlexiOverlapOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFlexiOverlapOptions self) -> OEFlexiOverlapOptions
        __init__(OEFlexiOverlapOptions self, OEFlexiOverlapOptions arg2) -> OEFlexiOverlapOptions
        """
        _oeshape.OEFlexiOverlapOptions_swiginit(self, _oeshape.new_OEFlexiOverlapOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEFlexiOverlapOptions

    def Validate(self) -> "bool":
        r"""Validate(OEFlexiOverlapOptions self) -> bool"""
        return _oeshape.OEFlexiOverlapOptions_Validate(self)

    def GetShapeFuncType(self) -> "unsigned int":
        r"""GetShapeFuncType(OEFlexiOverlapOptions self) -> unsigned int"""
        return _oeshape.OEFlexiOverlapOptions_GetShapeFuncType(self)

    def SetShapeFuncType(self, value: "unsigned int const") -> "bool":
        r"""SetShapeFuncType(OEFlexiOverlapOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEFlexiOverlapOptions_SetShapeFuncType(self, value)

    def GetColorFuncType(self) -> "unsigned int":
        r"""GetColorFuncType(OEFlexiOverlapOptions self) -> unsigned int"""
        return _oeshape.OEFlexiOverlapOptions_GetColorFuncType(self)

    def SetColorFuncType(self, value: "unsigned int const") -> "bool":
        r"""SetColorFuncType(OEFlexiOverlapOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEFlexiOverlapOptions_SetColorFuncType(self, value)

    def GetForceField(self) -> "OEMolPotential::OEForceField const *":
        r"""GetForceField(OEFlexiOverlapOptions self) -> OEForceField"""
        return _oeshape.OEFlexiOverlapOptions_GetForceField(self)

    def GetForceFieldType(self) -> "unsigned int":
        r"""GetForceFieldType(OEFlexiOverlapOptions self) -> unsigned int"""
        return _oeshape.OEFlexiOverlapOptions_GetForceFieldType(self)

    def SetForceField(self, *args) -> "bool":
        r"""
        SetForceField(OEFlexiOverlapOptions self, unsigned int const value) -> bool
        SetForceField(OEFlexiOverlapOptions self, std::string const & value) -> bool
        SetForceField(OEFlexiOverlapOptions self, oeistream value) -> bool
        SetForceField(OEFlexiOverlapOptions self, OEForceField value) -> bool
        """
        return _oeshape.OEFlexiOverlapOptions_SetForceField(self, *args)

    def GetHarmonic(self) -> "bool":
        r"""GetHarmonic(OEFlexiOverlapOptions self) -> bool"""
        return _oeshape.OEFlexiOverlapOptions_GetHarmonic(self)

    def SetHarmonic(self, value: "bool const") -> "bool":
        r"""SetHarmonic(OEFlexiOverlapOptions self, bool const value) -> bool"""
        return _oeshape.OEFlexiOverlapOptions_SetHarmonic(self, value)

    def SetShapeOptions(self, opts: "OEShapeOptions") -> "void":
        r"""SetShapeOptions(OEFlexiOverlapOptions self, OEShapeOptions opts)"""
        return _oeshape.OEFlexiOverlapOptions_SetShapeOptions(self, opts)

    def GetShapeOptions(self, *args) -> "OEShape::OEShapeOptions const &":
        r"""
        GetShapeOptions(OEFlexiOverlapOptions self) -> OEShapeOptions
        GetShapeOptions(OEFlexiOverlapOptions self) -> OEShapeOptions
        """
        return _oeshape.OEFlexiOverlapOptions_GetShapeOptions(self, *args)

    def SetColorOptions(self, opts: "OEColorOptions") -> "void":
        r"""SetColorOptions(OEFlexiOverlapOptions self, OEColorOptions opts)"""
        return _oeshape.OEFlexiOverlapOptions_SetColorOptions(self, opts)

    def GetColorOptions(self, *args) -> "OEShape::OEColorOptions const &":
        r"""
        GetColorOptions(OEFlexiOverlapOptions self) -> OEColorOptions
        GetColorOptions(OEFlexiOverlapOptions self) -> OEColorOptions
        """
        return _oeshape.OEFlexiOverlapOptions_GetColorOptions(self, *args)

    def SetOverlapFunc(self, func: "OEOverlapFuncBase") -> "bool":
        r"""SetOverlapFunc(OEFlexiOverlapOptions self, OEOverlapFuncBase func) -> bool"""
        return _oeshape.OEFlexiOverlapOptions_SetOverlapFunc(self, func)

    def GetOverlapFunc(self) -> "OEShape::OEOverlapFuncBase const *":
        r"""GetOverlapFunc(OEFlexiOverlapOptions self) -> OEOverlapFuncBase"""
        return _oeshape.OEFlexiOverlapOptions_GetOverlapFunc(self)

    def CreateCopy(self) -> "OEShape::OEFlexiOverlapOptions *":
        r"""CreateCopy(OEFlexiOverlapOptions self) -> OEFlexiOverlapOptions"""
        return _oeshape.OEFlexiOverlapOptions_CreateCopy(self)

# Register OEFlexiOverlapOptions in _oeshape:
_oeshape.OEFlexiOverlapOptions_swigregister(OEFlexiOverlapOptions)

class OEFlexiOverlapResults(OEOverlapResults):
    r"""Proxy of C++ OEShape::OEFlexiOverlapResults class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFlexiOverlapResults self) -> OEFlexiOverlapResults
        __init__(OEFlexiOverlapResults self, OEFlexiOverlapResults rhs) -> OEFlexiOverlapResults
        """
        _oeshape.OEFlexiOverlapResults_swiginit(self, _oeshape.new_OEFlexiOverlapResults(*args))
    __swig_destroy__ = _oeshape.delete_OEFlexiOverlapResults

    def GetInternalEnergy(self) -> "double":
        r"""GetInternalEnergy(OEFlexiOverlapResults self) -> double"""
        return _oeshape.OEFlexiOverlapResults_GetInternalEnergy(self)

# Register OEFlexiOverlapResults in _oeshape:
_oeshape.OEFlexiOverlapResults_swigregister(OEFlexiOverlapResults)

class OEFlexiOverlapFunc(OEMolFunc1):
    r"""Proxy of C++ OEShape::OEFlexiOverlapFunc class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFlexiOverlapFunc self, OEFlexiOverlapOptions options=OEShape::OEFlexiOverlapOptions()) -> OEFlexiOverlapFunc
        __init__(OEFlexiOverlapFunc self, OEFlexiOverlapFunc func) -> OEFlexiOverlapFunc
        """
        _oeshape.OEFlexiOverlapFunc_swiginit(self, _oeshape.new_OEFlexiOverlapFunc(*args))
    __swig_destroy__ = _oeshape.delete_OEFlexiOverlapFunc

    def NumVar(self) -> "unsigned int":
        r"""NumVar(OEFlexiOverlapFunc self) -> unsigned int"""
        return _oeshape.OEFlexiOverlapFunc_NumVar(self)

    def Setup(self, fitMol: "OEMolBase") -> "bool":
        r"""Setup(OEFlexiOverlapFunc self, OEMolBase fitMol) -> bool"""
        return _oeshape.OEFlexiOverlapFunc_Setup(self, fitMol)

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEFlexiOverlapFunc self, OEMolBase refMol) -> bool
        SetupRef(OEFlexiOverlapFunc self, OEShapeQueryBase refSQ) -> bool
        """
        return _oeshape.OEFlexiOverlapFunc_SetupRef(self, *args)

    def GetFComponents(self, coords: "double const *") -> "OESystem::OEIterBase< OEOpt::OEFComponent > *":
        r"""GetFComponents(OEFlexiOverlapFunc self, double const * coords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEFlexiOverlapFunc_GetFComponents(self, coords)

    def CreateCopy(self) -> "OEShape::OEFlexiOverlapFunc *":
        r"""CreateCopy(OEFlexiOverlapFunc self) -> OEFlexiOverlapFunc"""
        return _oeshape.OEFlexiOverlapFunc_CreateCopy(self)

    def __call__(self, *args) -> "double":
        r"""
        __call__(OEFlexiOverlapFunc self, double const * coords) -> double
        __call__(OEFlexiOverlapFunc self, double const * coords, double * grads) -> double
        """
        return _oeshape.OEFlexiOverlapFunc___call__(self, *args)

    def UpdateColorCoords(self, coords: "double const *", updatedCoord: "OEDoubleVector") -> "bool":
        r"""UpdateColorCoords(OEFlexiOverlapFunc self, double const * coords, OEDoubleVector updatedCoord) -> bool"""
        return _oeshape.OEFlexiOverlapFunc_UpdateColorCoords(self, coords, updatedCoord)

    def Overlap(self, *args) -> "bool":
        r"""
        Overlap(OEFlexiOverlapFunc self, double const * coords, OEFlexiOverlapResults results) -> bool
        Overlap(OEFlexiOverlapFunc self, OEMolBase fitMol, OEFlexiOverlapResults results) -> bool
        """
        return _oeshape.OEFlexiOverlapFunc_Overlap(self, *args)

# Register OEFlexiOverlapFunc in _oeshape:
_oeshape.OEFlexiOverlapFunc_swigregister(OEFlexiOverlapFunc)

class OEFlexiOverlayOptions(oechem.OEOptions):
    r"""Proxy of C++ OEShape::OEFlexiOverlayOptions class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFlexiOverlayOptions self) -> OEFlexiOverlayOptions
        __init__(OEFlexiOverlayOptions self, OEFlexiOverlayOptions arg2) -> OEFlexiOverlayOptions
        """
        _oeshape.OEFlexiOverlayOptions_swiginit(self, _oeshape.new_OEFlexiOverlayOptions(*args))
    __swig_destroy__ = _oeshape.delete_OEFlexiOverlayOptions

    def GetMaxOptSteps(self) -> "unsigned int":
        r"""GetMaxOptSteps(OEFlexiOverlayOptions self) -> unsigned int"""
        return _oeshape.OEFlexiOverlayOptions_GetMaxOptSteps(self)

    def SetMaxOptSteps(self, value: "unsigned int const") -> "bool":
        r"""SetMaxOptSteps(OEFlexiOverlayOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEFlexiOverlayOptions_SetMaxOptSteps(self, value)

    def GetRigidOverlay(self) -> "bool":
        r"""GetRigidOverlay(OEFlexiOverlayOptions self) -> bool"""
        return _oeshape.OEFlexiOverlayOptions_GetRigidOverlay(self)

    def SetRigidOverlay(self, value: "bool const") -> "bool":
        r"""SetRigidOverlay(OEFlexiOverlayOptions self, bool const value) -> bool"""
        return _oeshape.OEFlexiOverlayOptions_SetRigidOverlay(self, value)

    def SetFlexiOverlapOptions(self, opts: "OEFlexiOverlapOptions") -> "void":
        r"""SetFlexiOverlapOptions(OEFlexiOverlayOptions self, OEFlexiOverlapOptions opts)"""
        return _oeshape.OEFlexiOverlayOptions_SetFlexiOverlapOptions(self, opts)

    def GetFlexiOverlapOptions(self, *args) -> "OEShape::OEFlexiOverlapOptions const &":
        r"""
        GetFlexiOverlapOptions(OEFlexiOverlayOptions self) -> OEFlexiOverlapOptions
        GetFlexiOverlapOptions(OEFlexiOverlayOptions self) -> OEFlexiOverlapOptions
        """
        return _oeshape.OEFlexiOverlayOptions_GetFlexiOverlapOptions(self, *args)

    def SetRigidOverlayOptions(self, opts: "OEOverlayOptions") -> "void":
        r"""SetRigidOverlayOptions(OEFlexiOverlayOptions self, OEOverlayOptions opts)"""
        return _oeshape.OEFlexiOverlayOptions_SetRigidOverlayOptions(self, opts)

    def GetRigidOverlayOptions(self, *args) -> "OEShape::OEOverlayOptions const &":
        r"""
        GetRigidOverlayOptions(OEFlexiOverlayOptions self) -> OEOverlayOptions
        GetRigidOverlayOptions(OEFlexiOverlayOptions self) -> OEOverlayOptions
        """
        return _oeshape.OEFlexiOverlayOptions_GetRigidOverlayOptions(self, *args)

    def CreateCopy(self) -> "OEShape::OEFlexiOverlayOptions *":
        r"""CreateCopy(OEFlexiOverlayOptions self) -> OEFlexiOverlayOptions"""
        return _oeshape.OEFlexiOverlayOptions_CreateCopy(self)

# Register OEFlexiOverlayOptions in _oeshape:
_oeshape.OEFlexiOverlayOptions_swigregister(OEFlexiOverlayOptions)

class OEFlexiOverlay(object):
    r"""Proxy of C++ OEShape::OEFlexiOverlay class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEFlexiOverlay self, OEFlexiOverlayOptions options=OEShape::OEFlexiOverlayOptions()) -> OEFlexiOverlay
        __init__(OEFlexiOverlay self, OEFlexiOverlay func) -> OEFlexiOverlay
        """
        _oeshape.OEFlexiOverlay_swiginit(self, _oeshape.new_OEFlexiOverlay(*args))
    __swig_destroy__ = _oeshape.delete_OEFlexiOverlay

    def SetupRef(self, *args) -> "bool":
        r"""
        SetupRef(OEFlexiOverlay self, OEMolBase refmol) -> bool
        SetupRef(OEFlexiOverlay self, OEShapeQueryBase refSQ) -> bool
        """
        return _oeshape.OEFlexiOverlay_SetupRef(self, *args)

    def Overlay(self, fitmol: "OEMCMolBase") -> "OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > *":
        r"""Overlay(OEFlexiOverlay self, OEMCMolBase fitmol) -> OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > *"""
        return _oeshape.OEFlexiOverlay_Overlay(self, fitmol)

    def SortedOverlay(self, fitmol: "OEMCMolBase") -> "OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > *":
        r"""SortedOverlay(OEFlexiOverlay self, OEMCMolBase fitmol) -> OESystem::OEIterBase< OEShape::OEFlexiOverlapResults > *"""
        return _oeshape.OEFlexiOverlay_SortedOverlay(self, fitmol)

    def BestOverlay(self, result: "OEFlexiOverlapResults", fitMol: "OEMCMolBase") -> "bool":
        r"""BestOverlay(OEFlexiOverlay self, OEFlexiOverlapResults result, OEMCMolBase fitMol) -> bool"""
        return _oeshape.OEFlexiOverlay_BestOverlay(self, result, fitMol)

# Register OEFlexiOverlay in _oeshape:
_oeshape.OEFlexiOverlay_swigregister(OEFlexiOverlay)

OE_OESHAPE_VERSION = _oeshape.OE_OESHAPE_VERSION


def OEShapeGetRelease() -> "char const *":
    r"""OEShapeGetRelease() -> char const *"""
    return _oeshape.OEShapeGetRelease()

def OEShapeGetVersion() -> "unsigned int":
    r"""OEShapeGetVersion() -> unsigned int"""
    return _oeshape.OEShapeGetVersion()

def OEShapeGetArch() -> "char const *":
    r"""OEShapeGetArch() -> char const *"""
    return _oeshape.OEShapeGetArch()

def OEShapeGetPlatform() -> "char const *":
    r"""OEShapeGetPlatform() -> char const *"""
    return _oeshape.OEShapeGetPlatform()

def OEShapeIsLicensed(feature: "char const *"=None, expdate: "unsigned int *"=None) -> "bool":
    r"""OEShapeIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool"""
    return _oeshape.OEShapeIsLicensed(feature, expdate)

def OEShapeGetLicensee(*args) -> "std::string":
    r"""
    OEShapeGetLicensee(std::string & licensee) -> bool
    OEShapeGetLicensee() -> std::string
    """
    return _oeshape.OEShapeGetLicensee(*args)

def OEShapeGetSite(*args) -> "std::string":
    r"""
    OEShapeGetSite(std::string & site) -> bool
    OEShapeGetSite() -> std::string
    """
    return _oeshape.OEShapeGetSite(*args)

def OESetShapeQueryValue(rec: "OERecord", field: "OEShapeQueryField", sq: "OEShapeQuery") -> "bool":
    r"""OESetShapeQueryValue(OERecord rec, OEShapeQueryField field, OEShapeQuery sq) -> bool"""
    return _oeshape.OESetShapeQueryValue(rec, field, sq)

def OEInitSQFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    r"""OEInitSQFieldHandler() -> OEFieldTypeHandler"""
    return _oeshape.OEInitSQFieldHandler()

def OEInitSQVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    r"""OEInitSQVecFieldHandler() -> OEFieldTypeHandler"""
    return _oeshape.OEInitSQVecFieldHandler()
class OEVecOptShapeQuery(object):
    r"""Proxy of C++ std::vector< std::optional< OEShape::OEShapeQuery > > class."""

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

    def iterator(self) -> "swig::oeshape_SwigPyIterator *":
        r"""iterator(OEVecOptShapeQuery self) -> oeshape_SwigPyIterator"""
        return _oeshape.OEVecOptShapeQuery_iterator(self)
    def __iter__(self):
        return self.iterator()

    def __nonzero__(self) -> "bool":
        r"""__nonzero__(OEVecOptShapeQuery self) -> bool"""
        return _oeshape.OEVecOptShapeQuery___nonzero__(self)

    def __bool__(self) -> "bool":
        r"""__bool__(OEVecOptShapeQuery self) -> bool"""
        return _oeshape.OEVecOptShapeQuery___bool__(self)

    def __len__(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::size_type":
        r"""__len__(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::size_type"""
        return _oeshape.OEVecOptShapeQuery___len__(self)

    def __getslice__(self, i: "std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type", j: "std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type") -> "std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > *":
        r"""__getslice__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type j) -> OEVecOptShapeQuery"""
        return _oeshape.OEVecOptShapeQuery___getslice__(self, i, j)

    def __setslice__(self, *args) -> "void":
        r"""
        __setslice__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type j)
        __setslice__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type j, OEVecOptShapeQuery v)
        """
        return _oeshape.OEVecOptShapeQuery___setslice__(self, *args)

    def __delslice__(self, i: "std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type", j: "std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type") -> "void":
        r"""__delslice__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type j)"""
        return _oeshape.OEVecOptShapeQuery___delslice__(self, i, j)

    def __delitem__(self, *args) -> "void":
        r"""
        __delitem__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i)
        __delitem__(OEVecOptShapeQuery self, PySliceObject * slice)
        """
        return _oeshape.OEVecOptShapeQuery___delitem__(self, *args)

    def __getitem__(self, *args) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &":
        r"""
        __getitem__(OEVecOptShapeQuery self, PySliceObject * slice) -> OEVecOptShapeQuery
        __getitem__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i) -> std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &
        """
        return _oeshape.OEVecOptShapeQuery___getitem__(self, *args)

    def __setitem__(self, *args) -> "void":
        r"""
        __setitem__(OEVecOptShapeQuery self, PySliceObject * slice, OEVecOptShapeQuery v)
        __setitem__(OEVecOptShapeQuery self, PySliceObject * slice)
        __setitem__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::difference_type i, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x)
        """
        return _oeshape.OEVecOptShapeQuery___setitem__(self, *args)

    def pop(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type":
        r"""pop(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::value_type"""
        return _oeshape.OEVecOptShapeQuery_pop(self)

    def append(self, x: "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &") -> "void":
        r"""append(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x)"""
        return _oeshape.OEVecOptShapeQuery_append(self, x)

    def empty(self) -> "bool":
        r"""empty(OEVecOptShapeQuery self) -> bool"""
        return _oeshape.OEVecOptShapeQuery_empty(self)

    def size(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::size_type":
        r"""size(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::size_type"""
        return _oeshape.OEVecOptShapeQuery_size(self)

    def swap(self, v: "OEVecOptShapeQuery") -> "void":
        r"""swap(OEVecOptShapeQuery self, OEVecOptShapeQuery v)"""
        return _oeshape.OEVecOptShapeQuery_swap(self, v)

    def begin(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::iterator":
        r"""begin(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::iterator"""
        return _oeshape.OEVecOptShapeQuery_begin(self)

    def end(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::iterator":
        r"""end(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::iterator"""
        return _oeshape.OEVecOptShapeQuery_end(self)

    def rbegin(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::reverse_iterator":
        r"""rbegin(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::reverse_iterator"""
        return _oeshape.OEVecOptShapeQuery_rbegin(self)

    def rend(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::reverse_iterator":
        r"""rend(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::reverse_iterator"""
        return _oeshape.OEVecOptShapeQuery_rend(self)

    def clear(self) -> "void":
        r"""clear(OEVecOptShapeQuery self)"""
        return _oeshape.OEVecOptShapeQuery_clear(self)

    def get_allocator(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::allocator_type":
        r"""get_allocator(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::allocator_type"""
        return _oeshape.OEVecOptShapeQuery_get_allocator(self)

    def pop_back(self) -> "void":
        r"""pop_back(OEVecOptShapeQuery self)"""
        return _oeshape.OEVecOptShapeQuery_pop_back(self)

    def erase(self, *args) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::iterator":
        r"""
        erase(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::iterator pos) -> std::vector< std::optional< OEShape::OEShapeQuery > >::iterator
        erase(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::iterator first, std::vector< std::optional< OEShape::OEShapeQuery > >::iterator last) -> std::vector< std::optional< OEShape::OEShapeQuery > >::iterator
        """
        return _oeshape.OEVecOptShapeQuery_erase(self, *args)

    def __init__(self, *args):
        r"""
        __init__(OEVecOptShapeQuery self) -> OEVecOptShapeQuery
        __init__(OEVecOptShapeQuery self, OEVecOptShapeQuery other) -> OEVecOptShapeQuery
        __init__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type size) -> OEVecOptShapeQuery
        __init__(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type size, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & value) -> OEVecOptShapeQuery
        """
        _oeshape.OEVecOptShapeQuery_swiginit(self, _oeshape.new_OEVecOptShapeQuery(*args))

    def push_back(self, x: "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &") -> "void":
        r"""push_back(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x)"""
        return _oeshape.OEVecOptShapeQuery_push_back(self, x)

    def front(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &":
        r"""front(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &"""
        return _oeshape.OEVecOptShapeQuery_front(self)

    def back(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &":
        r"""back(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &"""
        return _oeshape.OEVecOptShapeQuery_back(self)

    def assign(self, n: "std::vector< std::optional< OEShape::OEShapeQuery > >::size_type", x: "std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const &") -> "void":
        r"""assign(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type n, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x)"""
        return _oeshape.OEVecOptShapeQuery_assign(self, n, x)

    def resize(self, *args) -> "void":
        r"""
        resize(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type new_size)
        resize(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type new_size, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x)
        """
        return _oeshape.OEVecOptShapeQuery_resize(self, *args)

    def insert(self, *args) -> "void":
        r"""
        insert(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::iterator pos, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x) -> std::vector< std::optional< OEShape::OEShapeQuery > >::iterator
        insert(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::iterator pos, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type n, std::vector< std::optional< OEShape::OEShapeQuery > >::value_type const & x)
        """
        return _oeshape.OEVecOptShapeQuery_insert(self, *args)

    def reserve(self, n: "std::vector< std::optional< OEShape::OEShapeQuery > >::size_type") -> "void":
        r"""reserve(OEVecOptShapeQuery self, std::vector< std::optional< OEShape::OEShapeQuery > >::size_type n)"""
        return _oeshape.OEVecOptShapeQuery_reserve(self, n)

    def capacity(self) -> "std::vector< std::optional< OEShape::OEShapeQuery > >::size_type":
        r"""capacity(OEVecOptShapeQuery self) -> std::vector< std::optional< OEShape::OEShapeQuery > >::size_type"""
        return _oeshape.OEVecOptShapeQuery_capacity(self)
    __swig_destroy__ = _oeshape.delete_OEVecOptShapeQuery

# Register OEVecOptShapeQuery in _oeshape:
_oeshape.OEVecOptShapeQuery_swigregister(OEVecOptShapeQuery)
cvar = _oeshape.cvar

class OEShapeQueryType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEFieldType< OEShape::OEShapeQuery > class."""

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

    @staticmethod
    def format(sq: "OEShapeQuery") -> "std::string":
        r"""format(OEShapeQuery sq) -> std::string"""
        return _oeshape.OEShapeQueryType_format(sq)

    def is_cacheable(self) -> "bool":
        r"""is_cacheable(OEShapeQueryType self) -> bool"""
        return _oeshape.OEShapeQueryType_is_cacheable(self)

    def get_name(self) -> "std::string":
        r"""get_name(OEShapeQueryType self) -> std::string"""
        return _oeshape.OEShapeQueryType_get_name(self)

    def bytes_to_json(self, bytes: "OEUCharVector") -> "std::string":
        r"""bytes_to_json(OEShapeQueryType self, OEUCharVector bytes) -> std::string"""
        return _oeshape.OEShapeQueryType_bytes_to_json(self, bytes)

    def __init__(self):
        r"""__init__(OEShapeQueryType self) -> OEShapeQueryType"""
        _oeshape.OEShapeQueryType_swiginit(self, _oeshape.new_OEShapeQueryType())
    __swig_destroy__ = _oeshape.delete_OEShapeQueryType

# Register OEShapeQueryType in _oeshape:
_oeshape.OEShapeQueryType_swigregister(OEShapeQueryType)

def OEShapeQueryType_format(sq: "OEShapeQuery") -> "std::string":
    r"""OEShapeQueryType_format(OEShapeQuery sq) -> std::string"""
    return _oeshape.OEShapeQueryType_format(sq)

class OEShapeQueryVecType(oechem.OEFieldTypeHandler):
    r"""Proxy of C++ OEDataFlow::OEVectorFieldType< OEShape::OEShapeQuery > class."""

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

    @staticmethod
    def format(val: "OEVecOptShapeQuery") -> "std::string":
        r"""format(OEVecOptShapeQuery val) -> std::string"""
        return _oeshape.OEShapeQueryVecType_format(val)

    @staticmethod
    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > >":
        r"""
        GetCopyForCache(std::vector< OEShape::OEShapeQuery,std::allocator< OEShape::OEShapeQuery > > const & val) -> std::shared_ptr< std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > >
        GetCopyForCache(OEVecOptShapeQuery val) -> std::shared_ptr< std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > >
        """
        return _oeshape.OEShapeQueryVecType_GetCopyForCache(*args)

    def get_name(self) -> "std::string":
        r"""get_name(OEShapeQueryVecType self) -> std::string"""
        return _oeshape.OEShapeQueryVecType_get_name(self)

    def bytes_to_json(self, bytes: "OEUCharVector") -> "std::string":
        r"""bytes_to_json(OEShapeQueryVecType self, OEUCharVector bytes) -> std::string"""
        return _oeshape.OEShapeQueryVecType_bytes_to_json(self, bytes)

    def __init__(self):
        r"""__init__(OEShapeQueryVecType self) -> OEShapeQueryVecType"""
        _oeshape.OEShapeQueryVecType_swiginit(self, _oeshape.new_OEShapeQueryVecType())
    __swig_destroy__ = _oeshape.delete_OEShapeQueryVecType

# Register OEShapeQueryVecType in _oeshape:
_oeshape.OEShapeQueryVecType_swigregister(OEShapeQueryVecType)

def OEShapeQueryVecType_format(val: "OEVecOptShapeQuery") -> "std::string":
    r"""OEShapeQueryVecType_format(OEVecOptShapeQuery val) -> std::string"""
    return _oeshape.OEShapeQueryVecType_format(val)

def OEShapeQueryVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > >":
    r"""
    OEShapeQueryVecType_GetCopyForCache(std::vector< OEShape::OEShapeQuery,std::allocator< OEShape::OEShapeQuery > > const & val) -> std::shared_ptr< std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > >
    OEShapeQueryVecType_GetCopyForCache(OEVecOptShapeQuery val) -> std::shared_ptr< std::vector< std::optional< OEShape::OEShapeQuery >,std::allocator< std::optional< OEShape::OEShapeQuery > > > >
    """
    return _oeshape.OEShapeQueryVecType_GetCopyForCache(*args)

class OEShapeQueryField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEField< OEShape::OEShapeQuery > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEShapeQueryField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEShapeQueryField
        __init__(OEShapeQueryField self, OEFieldBase other) -> OEShapeQueryField
        """
        _oeshape.OEShapeQueryField_swiginit(self, _oeshape.new_OEShapeQueryField(*args))

    def deserialize(self, value: "OEShapeQuery", data: "OEUCharVector") -> "bool":
        r"""deserialize(OEShapeQueryField self, OEShapeQuery value, OEUCharVector data) -> bool"""
        return _oeshape.OEShapeQueryField_deserialize(self, value, data)

    def get_type(self) -> "OEDataFlow::OEFieldType< OEShape::OEShapeQuery >":
        r"""get_type(OEShapeQueryField self) -> OEShapeQueryType"""
        return _oeshape.OEShapeQueryField_get_type(self)
    __swig_destroy__ = _oeshape.delete_OEShapeQueryField

# Register OEShapeQueryField in _oeshape:
_oeshape.OEShapeQueryField_swigregister(OEShapeQueryField)

class OEShapeQueryVecField(oechem.OEFieldBase):
    r"""Proxy of C++ OEDataFlow::OEVectorField< OEShape::OEShapeQuery > class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEShapeQueryVecField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEShapeQueryVecField
        __init__(OEShapeQueryVecField self, OEFieldBase f) -> OEShapeQueryVecField
        """
        _oeshape.OEShapeQueryVecField_swiginit(self, _oeshape.new_OEShapeQueryVecField(*args))

    def deserialize(self, *args) -> "bool":
        r"""
        deserialize(OEShapeQueryVecField self, OEVecOptShapeQuery ret, OEUCharVector data) -> bool
        deserialize(OEShapeQueryVecField self, std::vector< OEShape::OEShapeQuery,std::allocator< OEShape::OEShapeQuery > > & ret, OEUCharVector data) -> bool
        """
        return _oeshape.OEShapeQueryVecField_deserialize(self, *args)

    def get_type(self) -> "OEDataFlow::OEVectorFieldType< OEShape::OEShapeQuery >":
        r"""get_type(OEShapeQueryVecField self) -> OEShapeQueryVecType"""
        return _oeshape.OEShapeQueryVecField_get_type(self)
    __swig_destroy__ = _oeshape.delete_OEShapeQueryVecField

# Register OEShapeQueryVecField in _oeshape:
_oeshape.OEShapeQueryVecField_swigregister(OEShapeQueryVecField)

class OEShapeQueryMatchField(OEShapeQueryField):
    r"""Proxy of C++ OEDataFlow::OEMatchField< OEShape::OEShapeQuery > class."""

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

    def __init__(self, *args):
        r"""__init__(OEShapeQueryMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEShapeQueryMatchField"""
        _oeshape.OEShapeQueryMatchField_swiginit(self, _oeshape.new_OEShapeQueryMatchField(*args))
    __swig_destroy__ = _oeshape.delete_OEShapeQueryMatchField

# Register OEShapeQueryMatchField in _oeshape:
_oeshape.OEShapeQueryMatchField_swigregister(OEShapeQueryMatchField)

class OEShapeQueryVecMatchField(OEShapeQueryVecField):
    r"""Proxy of C++ OEDataFlow::OEMatchVectorField< OEShape::OEShapeQuery > class."""

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

    def __init__(self, *args):
        r"""__init__(OEShapeQueryVecMatchField self, std::string const & name, OEFieldMeta meta=OEDataFlow::OEFieldMeta(), bool readonly=False, bool nullable=False) -> OEShapeQueryVecMatchField"""
        _oeshape.OEShapeQueryVecMatchField_swiginit(self, _oeshape.new_OEShapeQueryVecMatchField(*args))
    __swig_destroy__ = _oeshape.delete_OEShapeQueryVecMatchField

# Register OEShapeQueryVecMatchField in _oeshape:
_oeshape.OEShapeQueryVecMatchField_swigregister(OEShapeQueryVecMatchField)


oechem.Types.Chem.ShapeQuery = OEShapeQueryType()
oechem.Types.Chem.ShapeQueryVec = OEShapeQueryVecType()
oechem.Types.Chem.ShapeQueryVec.__class__.scalar_type = oechem.Types.Chem.ShapeQuery

OEShapeQueryType.valid_types = (OEShapeQuery,)



