# CONFIDENTIAL. (C) 2017 OpenEye Scientific Software Inc.
# All rights reserved.
# 
# ALL SOFTWARE BELOW IS PROPRIETARY AND CONFIDENTIAL TO OPENEYE
# SCIENTIFIC SOFTWARE INC., AND IS SUBJECT TO THE FULL PROTECTION OF
# COPYRIGHT AND TRADESECRET LAW.
# Copying or modifying this software is strictly prohibited and illegal.
# Using this software without a valid license from OpenEye 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 OpenEye at eyesopen.com/legal if you have any questions
# about this warning.


# This file was automatically generated by SWIG (http://www.swig.org).
# Version 3.0.12
#
# 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

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

    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('_oeshape3406')
    return _oeshape

_oeshape = swig_import_helper()
del swig_import_helper
del _swig_python_version_info

try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
    if (name == "thisown"):
        return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name, None)
    if method:
        return method(self, value)
    if (not static):
        object.__setattr__(self, name, value)
    else:
        raise AttributeError("You cannot add attributes to %s" % self)


def _swig_setattr(self, class_type, name, value):
    return _swig_setattr_nondynamic(self, class_type, name, value, 0)


def _swig_getattr(self, class_type, name):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))


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_method(set):
    def set_attr(self, name, value):
        if (name == "thisown"):
            return self.this.own(value)
        if hasattr(self, name) or (name == "this"):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add attributes to %s" % self)
    return set_attr


try:
    import weakref
    weakref_proxy = weakref.proxy
except __builtin__.Exception:
    weakref_proxy = lambda x: x



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

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

def __no_op(arg1: 'OEAtomIter') -> "void":
    return _oeshape.__no_op(arg1)
__no_op = _oeshape.__no_op
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

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):
    """Proxy of C++ OEShape::OEColorForceField class."""

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEColorForceField self) -> OEColorForceField
        __init__(OEShape::OEColorForceField self, OEColorForceField rhs) -> OEColorForceField
        __init__(OEShape::OEColorForceField self, OEShape::OEColorForceFieldImpl const * impl) -> OEColorForceField
        """
        this = _oeshape.new_OEColorForceField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEColorForceField
    __del__ = lambda self: None

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


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


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


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


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


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


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


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


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


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


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


    def AddColorer(self, type: 'unsigned int', smarts: 'char const *') -> "bool":
        """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":
        """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":
        """NumInteractions(OEColorForceField self) -> unsigned int"""
        return _oeshape.OEColorForceField_NumInteractions(self)


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


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

OEColorForceField_swigregister = _oeshape.OEColorForceField_swigregister
OEColorForceField_swigregister(OEColorForceField)

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

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

    def __init__(self):
        """__init__(OEShape::OEIsColorAtomPred self) -> OEIsColorAtomPred"""
        this = _oeshape.new_OEIsColorAtomPred()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__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
    __del__ = lambda self: None
OEIsColorAtomPred_swigregister = _oeshape.OEIsColorAtomPred_swigregister
OEIsColorAtomPred_swigregister(OEIsColorAtomPred)


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

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

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

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

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

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

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

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

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

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

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

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

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

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

def OEAddColorAtom(*args) -> "OEChem::OEAtomBase *":
    """
    OEAddColorAtom(OEMolBase mol, float const * coords, unsigned int type, std::string const & typeName, std::string const & parentName) -> OEAtomBase
    OEAddColorAtom(OEMolBase mol, float const * coords, unsigned int type, std::string const & typeName) -> 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":
    """OEHasCompressedColorAtoms(OEMolBase mol) -> bool"""
    return _oeshape.OEHasCompressedColorAtoms(mol)

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

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

def OEDeleteCompressedColorAtoms(mol: 'OEMolBase') -> "void":
    """OEDeleteCompressedColorAtoms(OEMolBase mol)"""
    return _oeshape.OEDeleteCompressedColorAtoms(mol)
class OEShapeOptions(oechem.OEOptions):
    """Proxy of C++ OEShape::OEShapeOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEShapeOptions self) -> OEShapeOptions
        __init__(OEShape::OEShapeOptions self, OEShapeOptions arg2) -> OEShapeOptions
        """
        this = _oeshape.new_OEShapeOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeOptions
    __del__ = lambda self: None

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


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


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


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


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


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


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


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


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


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


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


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

OEShapeOptions_swigregister = _oeshape.OEShapeOptions_swigregister
OEShapeOptions_swigregister(OEShapeOptions)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEColorOptions self) -> OEColorOptions
        __init__(OEShape::OEColorOptions self, OEColorOptions argOpts) -> OEColorOptions
        """
        this = _oeshape.new_OEColorOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEColorOptions
    __del__ = lambda self: None

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


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


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


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


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


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


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

OEColorOptions_swigregister = _oeshape.OEColorOptions_swigregister
OEColorOptions_swigregister(OEColorOptions)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEAnalyticOptions self) -> OEAnalyticOptions
        __init__(OEShape::OEAnalyticOptions self, OEAnalyticOptions arg2) -> OEAnalyticOptions
        """
        this = _oeshape.new_OEAnalyticOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEAnalyticOptions
    __del__ = lambda self: None

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


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


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


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


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


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


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

OEAnalyticOptions_swigregister = _oeshape.OEAnalyticOptions_swigregister
OEAnalyticOptions_swigregister(OEAnalyticOptions)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEShapeGridOptions self) -> OEShapeGridOptions
        __init__(OEShape::OEShapeGridOptions self, OEShapeGridOptions arg2) -> OEShapeGridOptions
        """
        this = _oeshape.new_OEShapeGridOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeGridOptions
    __del__ = lambda self: None

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


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


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


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


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

OEShapeGridOptions_swigregister = _oeshape.OEShapeGridOptions_swigregister
OEShapeGridOptions_swigregister(OEShapeGridOptions)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEOverlapPrep self) -> OEOverlapPrep
        __init__(OEShape::OEOverlapPrep self, OEOverlapPrep argOpts) -> OEOverlapPrep
        """
        this = _oeshape.new_OEOverlapPrep(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEOverlapPrep
    __del__ = lambda self: None

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


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


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


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


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


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


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


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


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


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

OEOverlapPrep_swigregister = _oeshape.OEOverlapPrep_swigregister
OEOverlapPrep_swigregister(OEOverlapPrep)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEOverlapResults self) -> OEOverlapResults
        __init__(OEShape::OEOverlapResults self, OEOverlapResults rhs) -> OEOverlapResults
        """
        this = _oeshape.new_OEOverlapResults(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __iadd__(self, rhs: 'OEOverlapResults') -> "OEShape::OEOverlapResults &":
        """__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":
        """GetRefSelfOverlap(OEOverlapResults self) -> float"""
        return _oeshape.OEOverlapResults_GetRefSelfOverlap(self)


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


    def GetResult(self, argType: 'unsigned int const') -> "float":
        """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":
        """
        GetTverskyCombo(OEOverlapResults self, float alpha=0.95, float beta=0.05) -> float
        GetTverskyCombo(OEOverlapResults self, float alpha=0.95) -> float
        GetTverskyCombo(OEOverlapResults self) -> float
        """
        return _oeshape.OEOverlapResults_GetTverskyCombo(self, alpha, beta)

    __swig_destroy__ = _oeshape.delete_OEOverlapResults
    __del__ = lambda self: None
OEOverlapResults_swigregister = _oeshape.OEOverlapResults_swigregister
OEOverlapResults_swigregister(OEOverlapResults)

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

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    refconfidx = _swig_property(_oeshape.OEBestOverlayScore_refconfidx_get, _oeshape.OEBestOverlayScore_refconfidx_set)
    fitconfidx = _swig_property(_oeshape.OEBestOverlayScore_fitconfidx_get, _oeshape.OEBestOverlayScore_fitconfidx_set)
    fitsymmetry = _swig_property(_oeshape.OEBestOverlayScore_fitsymmetry_get, _oeshape.OEBestOverlayScore_fitsymmetry_set)
    rmat = _swig_property(_oeshape.OEBestOverlayScore_rmat_get, _oeshape.OEBestOverlayScore_rmat_set)
    trans = _swig_property(_oeshape.OEBestOverlayScore_trans_get, _oeshape.OEBestOverlayScore_trans_set)

    def __init__(self, *args):
        """
        __init__(OEShape::OEBestOverlayScore self) -> OEBestOverlayScore
        __init__(OEShape::OEBestOverlayScore self, OEBestOverlayScore rhs) -> OEBestOverlayScore
        """
        this = _oeshape.new_OEBestOverlayScore(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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


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


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


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


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

    __swig_destroy__ = _oeshape.delete_OEBestOverlayScore
    __del__ = lambda self: None
OEBestOverlayScore_swigregister = _oeshape.OEBestOverlayScore_swigregister
OEBestOverlayScore_swigregister(OEBestOverlayScore)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEBestOverlayResults self) -> OEBestOverlayResults
        __init__(OEShape::OEBestOverlayResults self, OEBestOverlayResults rhs) -> OEBestOverlayResults
        """
        this = _oeshape.new_OEBestOverlayResults(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEBestOverlayResults
    __del__ = lambda self: None

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


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


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

OEBestOverlayResults_swigregister = _oeshape.OEBestOverlayResults_swigregister
OEBestOverlayResults_swigregister(OEBestOverlayResults)


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

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self) -> OEFComponentIter
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self, OEFComponentIter rhs) -> OEFComponentIter
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self, OESystem::OEIterBase< OEOpt::OEFComponent > * rhs) -> OEFComponentIter
        __init__(OESystem::OEIter<(OEOpt::OEFComponent)> self, OESystem::OEIterBase< OESystem::OEIter< OEOpt::OEFComponent >::NonConstA > * rhs) -> OEFComponentIter
        """
        this = _oeshape.new_OEFComponentIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEFComponentIter
    __del__ = lambda self: None

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


    def Push(self, *args) -> "void":
        """
        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":
        """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 > &":
        """ToFirst(OEFComponentIter self) -> OEFComponentIter"""
        return _oeshape.OEFComponentIter_ToFirst(self)


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


    def __ref__(self) -> "OEOpt::OEFComponent &":
        """__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 *":
        """next(OEFComponentIter self) -> PyObject *"""
        return _oeshape.OEFComponentIter_next(self)


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


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


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

OEFComponentIter_swigregister = _oeshape.OEFComponentIter_swigregister
OEFComponentIter_swigregister(OEFComponentIter)

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

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    name = _swig_property(_oeshape.OEFComponent_name_get, _oeshape.OEFComponent_name_set)
    value = _swig_property(_oeshape.OEFComponent_value_get, _oeshape.OEFComponent_value_set)

    def __init__(self, *args):
        """
        __init__(OEOpt::OEFComponent self) -> OEFComponent
        __init__(OEOpt::OEFComponent self, std::string const & n, double v) -> OEFComponent
        """
        this = _oeshape.new_OEFComponent(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEFComponent
    __del__ = lambda self: None
OEFComponent_swigregister = _oeshape.OEFComponent_swigregister
OEFComponent_swigregister(OEFComponent)

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

    thisown = _swig_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":
        """NumVar(OEFunc0 self) -> unsigned int"""
        return _oeshape.OEFunc0_NumVar(self)


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


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

    __swig_destroy__ = _oeshape.delete_OEFunc0
    __del__ = lambda self: None
OEFunc0_swigregister = _oeshape.OEFunc0_swigregister
OEFunc0_swigregister(OEFunc0)

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

    thisown = _swig_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":
        """NumVar(OEFunc1 self) -> unsigned int"""
        return _oeshape.OEFunc1_NumVar(self)


    def __call__(self, *args) -> "double":
        """
        __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 > *":
        """GetFComponents(OEFunc1 self, double const * arg2) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEFunc1_GetFComponents(self, arg2)

    __swig_destroy__ = _oeshape.delete_OEFunc1
    __del__ = lambda self: None
OEFunc1_swigregister = _oeshape.OEFunc1_swigregister
OEFunc1_swigregister(OEFunc1)

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

    thisown = _swig_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":
        """
        __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
    __del__ = lambda self: None
OEFunc2_swigregister = _oeshape.OEFunc2_swigregister
OEFunc2_swigregister(OEFunc2)


def GetSWIG_NewPointerObj(*args) -> "PyObject *":
    """
    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(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):
    """Proxy of C++ OESystem::OEIter<(OEMolPotential::OEInteraction)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self) -> OEInteractionIter
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self, OEInteractionIter rhs) -> OEInteractionIter
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self, OESystem::OEIterBase< OEMolPotential::OEInteraction > * rhs) -> OEInteractionIter
        __init__(OESystem::OEIter<(OEMolPotential::OEInteraction)> self, OESystem::OEIterBase< OESystem::OEIter< OEMolPotential::OEInteraction >::NonConstA > * rhs) -> OEInteractionIter
        """
        this = _oeshape.new_OEInteractionIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEInteractionIter
    __del__ = lambda self: None

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


    def Push(self, *args) -> "void":
        """
        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":
        """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 > &":
        """ToFirst(OEInteractionIter self) -> OEInteractionIter"""
        return _oeshape.OEInteractionIter_ToFirst(self)


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


    def __ref__(self) -> "OEMolPotential::OEInteraction &":
        """__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 *":
        """next(OEInteractionIter self) -> PyObject *"""
        return _oeshape.OEInteractionIter_next(self)


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


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


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

OEInteractionIter_swigregister = _oeshape.OEInteractionIter_swigregister
OEInteractionIter_swigregister(OEInteractionIter)

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

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEInteraction self, OEMolPotential::OEInteractImpl & arg2) -> OEInteraction
        __init__(OEMolPotential::OEInteraction self, OEInteraction arg2) -> OEInteraction
        """
        this = _oeshape.new_OEInteraction(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEInteraction
    __del__ = lambda self: None

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


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


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


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


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


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

OEInteraction_swigregister = _oeshape.OEInteraction_swigregister
OEInteraction_swigregister(OEInteraction)

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

    thisown = _swig_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
    __del__ = lambda self: None

    def Setup(self, mol: 'OEMolBase') -> "bool":
        """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 > *":
        """
        GetInteractions(OEMolFunc self, OEMolBase arg2, double const * arg3, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEMolFunc self, OEMolBase arg2, double const * arg3) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeshape.OEMolFunc_GetInteractions(self, arg2, arg3, functype)

OEMolFunc_swigregister = _oeshape.OEMolFunc_swigregister
OEMolFunc_swigregister(OEMolFunc)

class OEMolFunc0(OEFunc0, OEMolFunc):
    """Proxy of C++ OEMolPotential::OEMolFunc0 class."""

    thisown = _swig_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
    __del__ = lambda self: None
OEMolFunc0_swigregister = _oeshape.OEMolFunc0_swigregister
OEMolFunc0_swigregister(OEMolFunc0)

class OEMolFunc1(OEFunc1, OEMolFunc0):
    """Proxy of C++ OEMolPotential::OEMolFunc1 class."""

    thisown = _swig_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
    __del__ = lambda self: None

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

OEMolFunc1_swigregister = _oeshape.OEMolFunc1_swigregister
OEMolFunc1_swigregister(OEMolFunc1)

class OEMolFunc2(OEFunc2, OEMolFunc1):
    """Proxy of C++ OEMolPotential::OEMolFunc2 class."""

    thisown = _swig_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
    __del__ = lambda self: None
OEMolFunc2_swigregister = _oeshape.OEMolFunc2_swigregister
OEMolFunc2_swigregister(OEMolFunc2)

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

    thisown = _swig_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
    __del__ = lambda self: None

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


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


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


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


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


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


    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """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 * > >":
        """GetParams(OEForceField self) -> std::vector< OEMolPotential::OEFFParams const *,std::allocator< OEMolPotential::OEFFParams const * > >"""
        return _oeshape.OEForceField_GetParams(self)

OEForceField_swigregister = _oeshape.OEForceField_swigregister
OEForceField_swigregister(OEForceField)

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

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEGenericFF2 self) -> OEGenericFF2
        __init__(OEMolPotential::OEGenericFF2 self, OEGenericFF2 arg2) -> OEGenericFF2
        """
        this = _oeshape.new_OEGenericFF2(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEGenericFF2
    __del__ = lambda self: None

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


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


    def __call__(self, *args) -> "bool":
        """
        __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 > *":
        """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 > *":
        """
        GetInteractions(OEGenericFF2 self, OEMolBase mol, double const * coord, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEGenericFF2 self, OEMolBase mol, double const * coord) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeshape.OEGenericFF2_GetInteractions(self, mol, coord, functype)


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


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


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


    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """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 * > >":
        """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":
        """
        AddMolFunc(OEGenericFF2 self, OEMolFunc2 f, bool own=False) -> bool
        AddMolFunc(OEGenericFF2 self, OEMolFunc2 f) -> bool
        """
        return _oeshape.OEGenericFF2_AddMolFunc(self, f, own)


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


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

OEGenericFF2_swigregister = _oeshape.OEGenericFF2_swigregister
OEGenericFF2_swigregister(OEGenericFF2)

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

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

    def __init__(self, *args):
        """
        __init__(OEMolPotential::OEGenericFF self) -> OEGenericFF
        __init__(OEMolPotential::OEGenericFF self, OEGenericFF arg2) -> OEGenericFF
        __init__(OEMolPotential::OEGenericFF self, OEGenericFF2 arg2) -> OEGenericFF
        """
        this = _oeshape.new_OEGenericFF(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEGenericFF
    __del__ = lambda self: None

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


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


    def __call__(self, *args) -> "double":
        """
        __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 > *":
        """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 > *":
        """
        GetInteractions(OEGenericFF self, OEMolBase mol, double const * coord, unsigned int functype=0) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEGenericFF self, OEMolBase mol, double const * coord) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeshape.OEGenericFF_GetInteractions(self, mol, coord, functype)


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


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


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


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


    def GetComponentPotentials(self) -> "std::vector< OEMolPotential::OEMolFunc1 *,std::allocator< OEMolPotential::OEMolFunc1 * > >":
        """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 * > >":
        """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":
        """
        AddMolFunc(OEGenericFF self, OEMolFunc1 f, bool own=False) -> bool
        AddMolFunc(OEGenericFF self, OEMolFunc1 f) -> bool
        """
        return _oeshape.OEGenericFF_AddMolFunc(self, f, own)


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


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

OEGenericFF_swigregister = _oeshape.OEGenericFF_swigregister
OEGenericFF_swigregister(OEGenericFF)

class OEInterMolFunc1(OEMolFunc1):
    """Proxy of C++ OEMolPotential::OEInterMolFunc1 class."""

    thisown = _swig_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
    __del__ = lambda self: None

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


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


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


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

OEInterMolFunc1_swigregister = _oeshape.OEInterMolFunc1_swigregister
OEInterMolFunc1_swigregister(OEInterMolFunc1)

class OEInterMolFunc2(OEInterMolFunc1, OEMolFunc2):
    """Proxy of C++ OEMolPotential::OEInterMolFunc2 class."""

    thisown = _swig_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
    __del__ = lambda self: None
OEInterMolFunc2_swigregister = _oeshape.OEInterMolFunc2_swigregister
OEInterMolFunc2_swigregister(OEInterMolFunc2)

class OEShapeQueryBase(oechem.OEBase):
    """Proxy of C++ OEShape::OEShapeQueryBase class."""

    thisown = _swig_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
    __del__ = lambda self: None

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


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


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


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


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


    def SetTitle(self, *args) -> "bool":
        """
        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":
        """IsEmpty(OEShapeQueryBase self) -> bool"""
        return _oeshape.OEShapeQueryBase_IsEmpty(self)


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


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


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


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


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


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


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

OEShapeQueryBase_swigregister = _oeshape.OEShapeQueryBase_swigregister
OEShapeQueryBase_swigregister(OEShapeQueryBase)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEShapeQuery self) -> OEShapeQuery
        __init__(OEShape::OEShapeQuery self, OEShapeQuery arg2) -> OEShapeQuery
        __init__(OEShape::OEShapeQuery self, OEShapeQueryBase arg2) -> OEShapeQuery
        """
        this = _oeshape.new_OEShapeQuery(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeQuery
    __del__ = lambda self: None

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


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


    def GetShapeGaussians(self, *args) -> "OESystem::OEIterBase< OESystem::OEGaussianBase const > *":
        """
        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":
        """AddShapeGaussian(OEShapeQuery self, OESystem::OEGaussianBase const & gauss)"""
        return _oeshape.OEShapeQuery_AddShapeGaussian(self, gauss)


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


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


    def GetColorGaussians(self, *args) -> "OESystem::OEIterBase< OESystem::OEGaussianBase const > *":
        """
        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":
        """AddColorGaussian(OEShapeQuery self, OESystem::OEGaussianBase const & c)"""
        return _oeshape.OEShapeQuery_AddColorGaussian(self, c)


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


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


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


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


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


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


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


    def GetShapeGrid(self, *args) -> "OESystem::OEScalarGrid const &":
        """
        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":
        """SetShapeGrid(OEShapeQuery self, OESystem::OEScalarGrid const & g)"""
        return _oeshape.OEShapeQuery_SetShapeGrid(self, g)


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


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


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


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


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


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


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

OEShapeQuery_swigregister = _oeshape.OEShapeQuery_swigregister
OEShapeQuery_swigregister(OEShapeQuery)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEShapeQueryPublic self) -> OEShapeQueryPublic
        __init__(OEShape::OEShapeQueryPublic self, OEShapeQueryPublic arg2) -> OEShapeQueryPublic
        """
        this = _oeshape.new_OEShapeQueryPublic(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeQueryPublic
    __del__ = lambda self: None

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


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


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



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

OEShapeQueryPublic_swigregister = _oeshape.OEShapeQueryPublic_swigregister
OEShapeQueryPublic_swigregister(OEShapeQueryPublic)


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

def OEReadShapeQuery(*args) -> "bool":
    """
    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":
    """
    OEWriteShapeQuery(char const * filename, OEShapeQueryPublic query) -> bool
    OEWriteShapeQuery(char const * filename, OEShapeQueryBase query) -> bool
    OEWriteShapeQuery(oeostream ofs, OEShapeQueryBase query) -> bool
    """
    return _oeshape.OEWriteShapeQuery(*args)
class OEHermiteOptions(object):
    """Proxy of C++ OEShape::OEHermiteOptions class."""

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEHermiteOptions self) -> OEHermiteOptions
        __init__(OEShape::OEHermiteOptions self, OEHermiteOptions arg2) -> OEHermiteOptions
        """
        this = _oeshape.new_OEHermiteOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHermiteOptions
    __del__ = lambda self: None

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


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


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


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


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


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


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


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


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


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

OEHermiteOptions_swigregister = _oeshape.OEHermiteOptions_swigregister
OEHermiteOptions_swigregister(OEHermiteOptions)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEHermite self) -> OEHermite
        __init__(OEShape::OEHermite self, OEHermiteOptions HermiteOptions) -> OEHermite
        __init__(OEShape::OEHermite self, OEHermite arg2) -> OEHermite
        """
        this = _oeshape.new_OEHermite(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHermite
    __del__ = lambda self: None

    def Setup(self, *args) -> "bool":
        """
        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":
        """GetCoefficients(OEHermite self, OEDoubleVector arg2) -> bool"""
        return _oeshape.OEHermite_GetCoefficients(self, arg2)


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


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


    def CreateGrid(self, arg2: 'OESystem::OEScalarGrid &', scale: 'float const') -> "void":
        """CreateGrid(OEHermite self, OESystem::OEScalarGrid & arg2, float const scale)"""
        return _oeshape.OEHermite_CreateGrid(self, arg2, scale)

OEHermite_swigregister = _oeshape.OEHermite_swigregister
OEHermite_swigregister(OEHermite)

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

    thisown = _swig_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
    __del__ = lambda self: None

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


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


    def SetupRef(self, *args) -> "bool":
        """
        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":
        """Setup(OEOverlapFuncBase self, OEMolBase argFitMol) -> bool"""
        return _oeshape.OEOverlapFuncBase_Setup(self, argFitMol)


    def GetInteractions(self, arg2: 'OEMolBase', arg3: 'double const *', functype: 'unsigned int') -> "OESystem::OEIterBase< OEMolPotential::OEInteraction > *":
        """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":
        """
        __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":
        """
        Overlap(OEOverlapFuncBase self, double const * argCoords, OEOverlapResults argResults) -> bool
        Overlap(OEOverlapFuncBase self, OEMolBase argFitMol, OEOverlapResults argResults) -> bool
        """
        return _oeshape.OEOverlapFuncBase_Overlap(self, *args)

OEOverlapFuncBase_swigregister = _oeshape.OEOverlapFuncBase_swigregister
OEOverlapFuncBase_swigregister(OEOverlapFuncBase)

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

    thisown = _swig_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
    __del__ = lambda self: None

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


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


    def SetupRef(self, *args) -> "bool":
        """
        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":
        """Setup(OEShapeFunc self, OEMolBase argFitMol) -> bool"""
        return _oeshape.OEShapeFunc_Setup(self, argFitMol)


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


    def Overlap(self, *args) -> "bool":
        """
        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 > *":
        """
        GetInteractions(OEShapeFunc self, OEMolBase arg2, double const * arg3, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEShapeFunc self, OEMolBase arg2, double const * arg3) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeshape.OEShapeFunc_GetInteractions(self, *args)


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

OEShapeFunc_swigregister = _oeshape.OEShapeFunc_swigregister
OEShapeFunc_swigregister(OEShapeFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEExactShapeFunc self, OEShapeOptions argOptions) -> OEExactShapeFunc
        __init__(OEShape::OEExactShapeFunc self) -> OEExactShapeFunc
        __init__(OEShape::OEExactShapeFunc self, OEExactShapeFunc argFunc) -> OEExactShapeFunc
        """
        this = _oeshape.new_OEExactShapeFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEExactShapeFunc
    __del__ = lambda self: None

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


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

OEExactShapeFunc_swigregister = _oeshape.OEExactShapeFunc_swigregister
OEExactShapeFunc_swigregister(OEExactShapeFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEGridShapeFunc self, OEShapeOptions argOptions) -> OEGridShapeFunc
        __init__(OEShape::OEGridShapeFunc self) -> OEGridShapeFunc
        __init__(OEShape::OEGridShapeFunc self, OEShapeGridOptions argOptions) -> OEGridShapeFunc
        __init__(OEShape::OEGridShapeFunc self, OEShapeOptions argShape, OEShapeGridOptions argGrid) -> OEGridShapeFunc
        __init__(OEShape::OEGridShapeFunc self, OEGridShapeFunc argFunc) -> OEGridShapeFunc
        """
        this = _oeshape.new_OEGridShapeFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEGridShapeFunc
    __del__ = lambda self: None

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


    def SetupRef(self, *args) -> "bool":
        """
        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 *":
        """CreateCopy(OEGridShapeFunc self) -> OEGridShapeFunc"""
        return _oeshape.OEGridShapeFunc_CreateCopy(self)

OEGridShapeFunc_swigregister = _oeshape.OEGridShapeFunc_swigregister
OEGridShapeFunc_swigregister(OEGridShapeFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEAnalyticShapeFunc self, OEShapeOptions argOptions) -> OEAnalyticShapeFunc
        __init__(OEShape::OEAnalyticShapeFunc self) -> OEAnalyticShapeFunc
        __init__(OEShape::OEAnalyticShapeFunc self, OEAnalyticOptions argOptions) -> OEAnalyticShapeFunc
        __init__(OEShape::OEAnalyticShapeFunc self, OEShapeOptions argShape, OEAnalyticOptions argAnalytic) -> OEAnalyticShapeFunc
        __init__(OEShape::OEAnalyticShapeFunc self, OEAnalyticShapeFunc argFunc) -> OEAnalyticShapeFunc
        """
        this = _oeshape.new_OEAnalyticShapeFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEAnalyticShapeFunc
    __del__ = lambda self: None

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


    def SetupRef(self, *args) -> "bool":
        """
        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 *":
        """CreateCopy(OEAnalyticShapeFunc self) -> OEAnalyticShapeFunc"""
        return _oeshape.OEAnalyticShapeFunc_CreateCopy(self)

OEAnalyticShapeFunc_swigregister = _oeshape.OEAnalyticShapeFunc_swigregister
OEAnalyticShapeFunc_swigregister(OEAnalyticShapeFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEHermiteShapeFunc self, OEShapeOptions argOptions) -> OEHermiteShapeFunc
        __init__(OEShape::OEHermiteShapeFunc self) -> OEHermiteShapeFunc
        __init__(OEShape::OEHermiteShapeFunc self, OEHermiteOptions HermOptRef, OEHermiteOptions HermOptFit) -> OEHermiteShapeFunc
        __init__(OEShape::OEHermiteShapeFunc self, OEShapeOptions argOptions, OEHermiteOptions HermOptRef, OEHermiteOptions HermOptFit) -> OEHermiteShapeFunc
        __init__(OEShape::OEHermiteShapeFunc self, OEHermiteShapeFunc arg2) -> OEHermiteShapeFunc
        """
        this = _oeshape.new_OEHermiteShapeFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHermiteShapeFunc
    __del__ = lambda self: None

    def SetupRef(self, *args) -> "bool":
        """
        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":
        """Setup(OEHermiteShapeFunc self, OEMolBase mol) -> bool"""
        return _oeshape.OEHermiteShapeFunc_Setup(self, mol)


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


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


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


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

OEHermiteShapeFunc_swigregister = _oeshape.OEHermiteShapeFunc_swigregister
OEHermiteShapeFunc_swigregister(OEHermiteShapeFunc)

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

    thisown = _swig_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
    __del__ = lambda self: None

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


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


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


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


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


    def Overlap(self, *args) -> "bool":
        """
        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 > *":
        """
        GetInteractions(OEColorFunc self, OEMolBase arg2, double const * arg3, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEColorFunc self, OEMolBase arg2, double const * arg3) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeshape.OEColorFunc_GetInteractions(self, *args)


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

OEColorFunc_swigregister = _oeshape.OEColorFunc_swigregister
OEColorFunc_swigregister(OEColorFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEExactColorFunc self, OEColorOptions argOpts) -> OEExactColorFunc
        __init__(OEShape::OEExactColorFunc self) -> OEExactColorFunc
        __init__(OEShape::OEExactColorFunc self, OEExactColorFunc argFunc) -> OEExactColorFunc
        """
        this = _oeshape.new_OEExactColorFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEExactColorFunc
    __del__ = lambda self: None

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

OEExactColorFunc_swigregister = _oeshape.OEExactColorFunc_swigregister
OEExactColorFunc_swigregister(OEExactColorFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEGridColorFunc self, OEColorOptions argOptions) -> OEGridColorFunc
        __init__(OEShape::OEGridColorFunc self) -> OEGridColorFunc
        __init__(OEShape::OEGridColorFunc self, OEShapeGridOptions argOptions) -> OEGridColorFunc
        __init__(OEShape::OEGridColorFunc self, OEColorOptions argColor, OEShapeGridOptions argGrid) -> OEGridColorFunc
        __init__(OEShape::OEGridColorFunc self, OEGridColorFunc argFunc) -> OEGridColorFunc
        """
        this = _oeshape.new_OEGridColorFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEGridColorFunc
    __del__ = lambda self: None

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


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


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

OEGridColorFunc_swigregister = _oeshape.OEGridColorFunc_swigregister
OEGridColorFunc_swigregister(OEGridColorFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEAnalyticColorFunc self, OEColorOptions argOptions) -> OEAnalyticColorFunc
        __init__(OEShape::OEAnalyticColorFunc self) -> OEAnalyticColorFunc
        __init__(OEShape::OEAnalyticColorFunc self, OEAnalyticOptions argOptions) -> OEAnalyticColorFunc
        __init__(OEShape::OEAnalyticColorFunc self, OEColorOptions argColor, OEAnalyticOptions argAnalytic) -> OEAnalyticColorFunc
        __init__(OEShape::OEAnalyticColorFunc self, OEAnalyticColorFunc argFunc) -> OEAnalyticColorFunc
        """
        this = _oeshape.new_OEAnalyticColorFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEAnalyticColorFunc
    __del__ = lambda self: None

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


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


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

OEAnalyticColorFunc_swigregister = _oeshape.OEAnalyticColorFunc_swigregister
OEAnalyticColorFunc_swigregister(OEAnalyticColorFunc)

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

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

    def __init__(self):
        """__init__(OEShape::OEColorResults self) -> OEColorResults"""
        this = _oeshape.new_OEColorResults()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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


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


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


    def GetTversky(self, alpha: 'float', beta: 'float') -> "float":
        """GetTversky(OEColorResults self, float alpha, float beta) -> float"""
        return _oeshape.OEColorResults_GetTversky(self, alpha, beta)

    __swig_destroy__ = _oeshape.delete_OEColorResults
    __del__ = lambda self: None
OEColorResults_swigregister = _oeshape.OEColorResults_swigregister
OEColorResults_swigregister(OEColorResults)


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

def OESetCachedSelfColor(*args) -> "bool":
    """
    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":
    """
    OESelfColor(OEMolBase mol, OEColorForceField cff, bool allcolor=False) -> float
    OESelfColor(OEMolBase mol, OEColorForceField cff) -> float
    """
    return _oeshape.OESelfColor(mol, cff, allcolor)
class OEColorOverlap(object):
    """Proxy of C++ OEShape::OEColorOverlap class."""

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEColorOverlap self) -> OEColorOverlap
        __init__(OEShape::OEColorOverlap self, OEColorOverlap rhs) -> OEColorOverlap
        """
        this = _oeshape.new_OEColorOverlap(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEColorOverlap
    __del__ = lambda self: None

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


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


    def SetColorForceField(self, *args) -> "bool":
        """
        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":
        """
        ColorScore(OEColorOverlap self, OEMolBase fitmol, OEColorResults res) -> bool
        ColorScore(OEColorOverlap self, OEColorResults res) -> bool
        """
        return _oeshape.OEColorOverlap_ColorScore(self, *args)


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


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


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

OEColorOverlap_swigregister = _oeshape.OEColorOverlap_swigregister
OEColorOverlap_swigregister(OEColorOverlap)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEOverlapFunc self, OEShapeFunc argShape, OEColorFunc argColor) -> OEOverlapFunc
        __init__(OEShape::OEOverlapFunc self, OEShapeFunc argShape) -> OEOverlapFunc
        __init__(OEShape::OEOverlapFunc self) -> OEOverlapFunc
        __init__(OEShape::OEOverlapFunc self, OEColorFunc argFunc) -> OEOverlapFunc
        __init__(OEShape::OEOverlapFunc self, OEOverlapFunc argFunc) -> OEOverlapFunc
        """
        this = _oeshape.new_OEOverlapFunc(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEOverlapFunc
    __del__ = lambda self: None

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


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


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


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


    def SetupRef(self, *args) -> "bool":
        """
        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 > *":
        """GetFComponents(OEOverlapFunc self, double const * argCoords) -> OESystem::OEIterBase< OEOpt::OEFComponent > *"""
        return _oeshape.OEOverlapFunc_GetFComponents(self, argCoords)


    def Overlap(self, *args) -> "bool":
        """
        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 *":
        """CreateCopy(OEOverlapFunc self) -> OEOverlapFunc"""
        return _oeshape.OEOverlapFunc_CreateCopy(self)


    def __call__(self, *args) -> "double":
        """
        __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 > *":
        """
        GetInteractions(OEOverlapFunc self, OEMolBase arg2, double const * arg3, unsigned int functype) -> OESystem::OEIterBase< OEMolPotential::OEInteraction >
        GetInteractions(OEOverlapFunc self, OEMolBase arg2, double const * arg3) -> OESystem::OEIterBase< OEMolPotential::OEInteraction > *
        """
        return _oeshape.OEOverlapFunc_GetInteractions(self, *args)

OEOverlapFunc_swigregister = _oeshape.OEOverlapFunc_swigregister
OEOverlapFunc_swigregister(OEOverlapFunc)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEOverlap self) -> OEOverlap
        __init__(OEShape::OEOverlap self, OEMolBase refmol) -> OEOverlap
        __init__(OEShape::OEOverlap self, OESystem::OEScalarGrid const & refmol) -> OEOverlap
        __init__(OEShape::OEOverlap self, OEOverlap rhs) -> OEOverlap
        """
        this = _oeshape.new_OEOverlap(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEOverlap
    __del__ = lambda self: None

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


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


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


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


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


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


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


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


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


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


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


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


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


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


    def Overlap(self, *args) -> "bool":
        """
        Overlap(OEOverlap self, OEMolBase fitmol, OEOverlapResults res, float * atomOverlaps=None) -> bool
        Overlap(OEOverlap self, OEMolBase fitmol, OEOverlapResults res) -> bool
        Overlap(OEOverlap self, OEOverlapResults res, float * atomOverlaps=None) -> bool
        Overlap(OEOverlap self, OEOverlapResults res) -> 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":
        """SetFitGrid(OEOverlap self, OESystem::OEScalarGrid const & arg2) -> bool"""
        return _oeshape.OEOverlap_SetFitGrid(self, arg2)


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


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

OEOverlap_swigregister = _oeshape.OEOverlap_swigregister
OEOverlap_swigregister(OEOverlap)


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

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

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

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

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEBestOverlay self) -> OEBestOverlay
        __init__(OEShape::OEBestOverlay self, OEMCMolBase refmol) -> OEBestOverlay
        __init__(OEShape::OEBestOverlay self, OESystem::OEScalarGrid const & refgrid, float interpolate=0.5) -> OEBestOverlay
        __init__(OEShape::OEBestOverlay self, OESystem::OEScalarGrid const & refgrid) -> OEBestOverlay
        __init__(OEShape::OEBestOverlay self, OEBestOverlay arg2) -> OEBestOverlay
        """
        this = _oeshape.new_OEBestOverlay(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEBestOverlay
    __del__ = lambda self: None

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


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


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


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


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


    def SetColorForceField(self, *args) -> "bool":
        """
        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":
        """SetColorOptimize(OEBestOverlay self, bool state)"""
        return _oeshape.OEBestOverlay_SetColorOptimize(self, state)


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


    def Overlay(self, *args) -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        """
        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)

OEBestOverlay_swigregister = _oeshape.OEBestOverlay_swigregister
OEBestOverlay_swigregister(OEBestOverlay)

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

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayResults)> self) -> OEBestOverlayResultsIter
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayResults)> self, OEBestOverlayResultsIter rhs) -> OEBestOverlayResultsIter
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayResults)> self, OESystem::OEIterBase< OEShape::OEBestOverlayResults > * rhs) -> OEBestOverlayResultsIter
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayResults)> self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEBestOverlayResults >::NonConstA > * rhs) -> OEBestOverlayResultsIter
        """
        this = _oeshape.new_OEBestOverlayResultsIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEBestOverlayResultsIter
    __del__ = lambda self: None

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


    def Push(self, *args) -> "void":
        """
        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":
        """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 > &":
        """ToFirst(OEBestOverlayResultsIter self) -> OEBestOverlayResultsIter"""
        return _oeshape.OEBestOverlayResultsIter_ToFirst(self)


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


    def __ref__(self) -> "OEShape::OEBestOverlayResults &":
        """__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 *":
        """next(OEBestOverlayResultsIter self) -> PyObject *"""
        return _oeshape.OEBestOverlayResultsIter_next(self)


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


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


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

OEBestOverlayResultsIter_swigregister = _oeshape.OEBestOverlayResultsIter_swigregister
OEBestOverlayResultsIter_swigregister(OEBestOverlayResultsIter)

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

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayScore)> self) -> OEBestOverlayScoreIter
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayScore)> self, OEBestOverlayScoreIter rhs) -> OEBestOverlayScoreIter
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayScore)> self, OESystem::OEIterBase< OEShape::OEBestOverlayScore > * rhs) -> OEBestOverlayScoreIter
        __init__(OESystem::OEIter<(OEShape::OEBestOverlayScore)> self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEBestOverlayScore >::NonConstA > * rhs) -> OEBestOverlayScoreIter
        """
        this = _oeshape.new_OEBestOverlayScoreIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScoreIter
    __del__ = lambda self: None

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


    def Push(self, *args) -> "void":
        """
        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":
        """Sort(OEBestOverlayScoreIter self, OEBestOverlayScoreSorterPred sort_criterion)"""
        return _oeshape.OEBestOverlayScoreIter_Sort(self, sort_criterion)


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


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


    def __ref__(self) -> "OEShape::OEBestOverlayScore &":
        """__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 *":
        """next(OEBestOverlayScoreIter self) -> PyObject *"""
        return _oeshape.OEBestOverlayScoreIter_next(self)


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


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


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

OEBestOverlayScoreIter_swigregister = _oeshape.OEBestOverlayScoreIter_swigregister
OEBestOverlayScoreIter_swigregister(OEBestOverlayScoreIter)

class OEBestOverlayScoreSorterFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore,bool)> class."""

    thisown = _swig_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
    __del__ = lambda self: None

    def __call__(self, a1: 'OEBestOverlayScore', a2: 'OEBestOverlayScore') -> "bool":
        """__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 *":
        """CreateCopy(OEBestOverlayScoreSorterFunc self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEBestOverlayScoreSorterFunc_CreateCopy(self)

OEBestOverlayScoreSorterFunc_swigregister = _oeshape.OEBestOverlayScoreSorterFunc_swigregister
OEBestOverlayScoreSorterFunc_swigregister(OEBestOverlayScoreSorterFunc)

class OEBestOverlayScoreCutoffFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEShape::OEBestOverlayScore,bool)> class."""

    thisown = _swig_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
    __del__ = lambda self: None

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


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

OEBestOverlayScoreCutoffFunc_swigregister = _oeshape.OEBestOverlayScoreCutoffFunc_swigregister
OEBestOverlayScoreCutoffFunc_swigregister(OEBestOverlayScoreCutoffFunc)

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

    thisown = _swig_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":
        """__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 *":
        """CreateCopy(OEBestOverlayScoreSorterPred self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEBestOverlayScoreSorterPred_CreateCopy(self)


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


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore)> self) -> OEBestOverlayScoreSorterPred"""
        if self.__class__ == OEBestOverlayScoreSorterPred:
            _self = None
        else:
            _self = self
        this = _oeshape.new_OEBestOverlayScoreSorterPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEBestOverlayScoreSorterPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oeshape.disown_OEBestOverlayScoreSorterPred(self)
        return weakref_proxy(self)
OEBestOverlayScoreSorterPred_swigregister = _oeshape.OEBestOverlayScoreSorterPred_swigregister
OEBestOverlayScoreSorterPred_swigregister(OEBestOverlayScoreSorterPred)

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

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEShape::OEBestOverlayScore)> self) -> OEOverlayScoreCutoffPred"""
        if self.__class__ == OEOverlayScoreCutoffPred:
            _self = None
        else:
            _self = self
        this = _oeshape.new_OEOverlayScoreCutoffPred(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEOverlayScoreCutoffPred
    __del__ = lambda self: None

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


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


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

    def __disown__(self):
        self.this.disown()
        _oeshape.disown_OEOverlayScoreCutoffPred(self)
        return weakref_proxy(self)
OEOverlayScoreCutoffPred_swigregister = _oeshape.OEOverlayScoreCutoffPred_swigregister
OEOverlayScoreCutoffPred_swigregister(OEOverlayScoreCutoffPred)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestTanimoto self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestTanimoto_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestTanimoto self) -> OEHighestTanimoto"""
        this = _oeshape.new_OEHighestTanimoto()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestTanimoto
    __del__ = lambda self: None
OEHighestTanimoto_swigregister = _oeshape.OEHighestTanimoto_swigregister
OEHighestTanimoto_swigregister(OEHighestTanimoto)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestOverlap self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestOverlap_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestOverlap self) -> OEHighestOverlap"""
        this = _oeshape.new_OEHighestOverlap()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestOverlap
    __del__ = lambda self: None
OEHighestOverlap_swigregister = _oeshape.OEHighestOverlap_swigregister
OEHighestOverlap_swigregister(OEHighestOverlap)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestRefTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestRefTversky_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestRefTversky self) -> OEHighestRefTversky"""
        this = _oeshape.new_OEHighestRefTversky()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestRefTversky
    __del__ = lambda self: None
OEHighestRefTversky_swigregister = _oeshape.OEHighestRefTversky_swigregister
OEHighestRefTversky_swigregister(OEHighestRefTversky)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestFitTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestFitTversky_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestFitTversky self) -> OEHighestFitTversky"""
        this = _oeshape.new_OEHighestFitTversky()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestFitTversky
    __del__ = lambda self: None
OEHighestFitTversky_swigregister = _oeshape.OEHighestFitTversky_swigregister
OEHighestFitTversky_swigregister(OEHighestFitTversky)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestScaledColor self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestScaledColor_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestScaledColor self) -> OEHighestScaledColor"""
        this = _oeshape.new_OEHighestScaledColor()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestScaledColor
    __del__ = lambda self: None
OEHighestScaledColor_swigregister = _oeshape.OEHighestScaledColor_swigregister
OEHighestScaledColor_swigregister(OEHighestScaledColor)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestColorTanimoto self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestColorTanimoto_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestColorTanimoto self) -> OEHighestColorTanimoto"""
        this = _oeshape.new_OEHighestColorTanimoto()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestColorTanimoto
    __del__ = lambda self: None
OEHighestColorTanimoto_swigregister = _oeshape.OEHighestColorTanimoto_swigregister
OEHighestColorTanimoto_swigregister(OEHighestColorTanimoto)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestRefColorTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestRefColorTversky_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestRefColorTversky self) -> OEHighestRefColorTversky"""
        this = _oeshape.new_OEHighestRefColorTversky()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestRefColorTversky
    __del__ = lambda self: None
OEHighestRefColorTversky_swigregister = _oeshape.OEHighestRefColorTversky_swigregister
OEHighestRefColorTversky_swigregister(OEHighestRefColorTversky)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestFitColorTversky self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestFitColorTversky_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestFitColorTversky self) -> OEHighestFitColorTversky"""
        this = _oeshape.new_OEHighestFitColorTversky()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestFitColorTversky
    __del__ = lambda self: None
OEHighestFitColorTversky_swigregister = _oeshape.OEHighestFitColorTversky_swigregister
OEHighestFitColorTversky_swigregister(OEHighestFitColorTversky)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestComboScore self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestComboScore_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestComboScore self) -> OEHighestComboScore"""
        this = _oeshape.new_OEHighestComboScore()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestComboScore
    __del__ = lambda self: None
OEHighestComboScore_swigregister = _oeshape.OEHighestComboScore_swigregister
OEHighestComboScore_swigregister(OEHighestComboScore)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestTanimotoCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestTanimotoCombo_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestTanimotoCombo self) -> OEHighestTanimotoCombo"""
        this = _oeshape.new_OEHighestTanimotoCombo()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestTanimotoCombo
    __del__ = lambda self: None
OEHighestTanimotoCombo_swigregister = _oeshape.OEHighestTanimotoCombo_swigregister
OEHighestTanimotoCombo_swigregister(OEHighestTanimotoCombo)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestRefTverskyCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestRefTverskyCombo_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestRefTverskyCombo self) -> OEHighestRefTverskyCombo"""
        this = _oeshape.new_OEHighestRefTverskyCombo()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestRefTverskyCombo
    __del__ = lambda self: None
OEHighestRefTverskyCombo_swigregister = _oeshape.OEHighestRefTverskyCombo_swigregister
OEHighestRefTverskyCombo_swigregister(OEHighestRefTverskyCombo)

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

    thisown = _swig_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":
        """__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 > *":
        """CreateCopy(OEHighestFitTverskyCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestFitTverskyCombo_CreateCopy(self)


    def __init__(self):
        """__init__(OEShape::OEHighestFitTverskyCombo self) -> OEHighestFitTverskyCombo"""
        this = _oeshape.new_OEHighestFitTverskyCombo()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEHighestFitTverskyCombo
    __del__ = lambda self: None
OEHighestFitTverskyCombo_swigregister = _oeshape.OEHighestFitTverskyCombo_swigregister
OEHighestFitTverskyCombo_swigregister(OEHighestFitTverskyCombo)

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

    thisown = _swig_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'):
        """__init__(OEShape::OEHighestTverskyCombo self, float const alpha) -> OEHighestTverskyCombo"""
        this = _oeshape.new_OEHighestTverskyCombo(alpha)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, s1: 'OEBestOverlayScore', s2: 'OEBestOverlayScore') -> "bool":
        """__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 > *":
        """CreateCopy(OEHighestTverskyCombo self) -> OEBestOverlayScoreSorterFunc"""
        return _oeshape.OEHighestTverskyCombo_CreateCopy(self)

    __swig_destroy__ = _oeshape.delete_OEHighestTverskyCombo
    __del__ = lambda self: None
OEHighestTverskyCombo_swigregister = _oeshape.OEHighestTverskyCombo_swigregister
OEHighestTverskyCombo_swigregister(OEHighestTverskyCombo)

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

    thisown = _swig_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":
        """__call__(OEOverlayScoreCutoff self, OEBestOverlayScore score) -> bool"""
        return _oeshape.OEOverlayScoreCutoff___call__(self, score)

    __swig_destroy__ = _oeshape.delete_OEOverlayScoreCutoff
    __del__ = lambda self: None
OEOverlayScoreCutoff_swigregister = _oeshape.OEOverlayScoreCutoff_swigregister
OEOverlayScoreCutoff_swigregister(OEOverlayScoreCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OETanimotoComboCutoff self, double const argCutoff) -> OETanimotoComboCutoff"""
        this = _oeshape.new_OETanimotoComboCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OETanimotoComboCutoff
    __del__ = lambda self: None
OETanimotoComboCutoff_swigregister = _oeshape.OETanimotoComboCutoff_swigregister
OETanimotoComboCutoff_swigregister(OETanimotoComboCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OETanimotoCutoff self, double const argCutoff) -> OETanimotoCutoff"""
        this = _oeshape.new_OETanimotoCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OETanimotoCutoff
    __del__ = lambda self: None
OETanimotoCutoff_swigregister = _oeshape.OETanimotoCutoff_swigregister
OETanimotoCutoff_swigregister(OETanimotoCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OEOverlapCutoff self, double const argCutoff) -> OEOverlapCutoff"""
        this = _oeshape.new_OEOverlapCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OEOverlapCutoff
    __del__ = lambda self: None
OEOverlapCutoff_swigregister = _oeshape.OEOverlapCutoff_swigregister
OEOverlapCutoff_swigregister(OEOverlapCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OERefTverskyCutoff self, double const argCutoff) -> OERefTverskyCutoff"""
        this = _oeshape.new_OERefTverskyCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OERefTverskyCutoff
    __del__ = lambda self: None
OERefTverskyCutoff_swigregister = _oeshape.OERefTverskyCutoff_swigregister
OERefTverskyCutoff_swigregister(OERefTverskyCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OEFitTverskyCutoff self, double const argCutoff) -> OEFitTverskyCutoff"""
        this = _oeshape.new_OEFitTverskyCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OEFitTverskyCutoff
    __del__ = lambda self: None
OEFitTverskyCutoff_swigregister = _oeshape.OEFitTverskyCutoff_swigregister
OEFitTverskyCutoff_swigregister(OEFitTverskyCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OEColorTanimotoCutoff self, double const argCutoff) -> OEColorTanimotoCutoff"""
        this = _oeshape.new_OEColorTanimotoCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OEColorTanimotoCutoff
    __del__ = lambda self: None
OEColorTanimotoCutoff_swigregister = _oeshape.OEColorTanimotoCutoff_swigregister
OEColorTanimotoCutoff_swigregister(OEColorTanimotoCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OERefColorTverskyCutoff self, double const argCutoff) -> OERefColorTverskyCutoff"""
        this = _oeshape.new_OERefColorTverskyCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OERefColorTverskyCutoff
    __del__ = lambda self: None
OERefColorTverskyCutoff_swigregister = _oeshape.OERefColorTverskyCutoff_swigregister
OERefColorTverskyCutoff_swigregister(OERefColorTverskyCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OEFitColorTverskyCutoff self, double const argCutoff) -> OEFitColorTverskyCutoff"""
        this = _oeshape.new_OEFitColorTverskyCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OEFitColorTverskyCutoff
    __del__ = lambda self: None
OEFitColorTverskyCutoff_swigregister = _oeshape.OEFitColorTverskyCutoff_swigregister
OEFitColorTverskyCutoff_swigregister(OEFitColorTverskyCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OERefTverskyComboCutoff self, double const argCutoff) -> OERefTverskyComboCutoff"""
        this = _oeshape.new_OERefTverskyComboCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OERefTverskyComboCutoff
    __del__ = lambda self: None
OERefTverskyComboCutoff_swigregister = _oeshape.OERefTverskyComboCutoff_swigregister
OERefTverskyComboCutoff_swigregister(OERefTverskyComboCutoff)

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

    thisown = _swig_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'):
        """__init__(OEShape::OEFitTverskyComboCutoff self, double const argCutoff) -> OEFitTverskyComboCutoff"""
        this = _oeshape.new_OEFitTverskyComboCutoff(argCutoff)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

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

    __swig_destroy__ = _oeshape.delete_OEFitTverskyComboCutoff
    __del__ = lambda self: None
OEFitTverskyComboCutoff_swigregister = _oeshape.OEFitTverskyComboCutoff_swigregister
OEFitTverskyComboCutoff_swigregister(OEFitTverskyComboCutoff)


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

def OECalcShapeMultipoles(*args) -> "PyObject *":
    """
    OECalcShapeMultipoles(OEMolBase mol, unsigned int type, bool useH=False) -> PyObject
    OECalcShapeMultipoles(OEMolBase mol, unsigned int type) -> PyObject
    OECalcShapeMultipoles(OEMolBase mol) -> PyObject *
    """
    return _oeshape.OECalcShapeMultipoles(*args)
class OEStarts(object):
    """Proxy of C++ OEShape::OEStarts class."""

    thisown = _swig_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
    __del__ = lambda self: None

    def SetupRef(self, *args) -> "bool":
        """
        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":
        """Setup(OEStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OEStarts_Setup(self, argFitMol, argTrans)


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


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


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

OEStarts_swigregister = _oeshape.OEStarts_swigregister
OEStarts_swigregister(OEStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEInertialStarts self) -> OEInertialStarts
        __init__(OEShape::OEInertialStarts self, OEInertialStarts argStarts) -> OEInertialStarts
        """
        this = _oeshape.new_OEInertialStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEInertialStarts
    __del__ = lambda self: None

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


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


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


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

OEInertialStarts_swigregister = _oeshape.OEInertialStarts_swigregister
OEInertialStarts_swigregister(OEInertialStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEAtAtomStarts self, OEUnaryAtomPred argPredicate) -> OEAtAtomStarts
        __init__(OEShape::OEAtAtomStarts self) -> OEAtAtomStarts
        __init__(OEShape::OEAtAtomStarts self, OEAtAtomStarts argStarts) -> OEAtAtomStarts
        """
        this = _oeshape.new_OEAtAtomStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEAtAtomStarts
    __del__ = lambda self: None

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


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

OEAtAtomStarts_swigregister = _oeshape.OEAtAtomStarts_swigregister
OEAtAtomStarts_swigregister(OEAtAtomStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OERandomStarts self) -> OERandomStarts
        __init__(OEShape::OERandomStarts self, OERandomStarts argStarts) -> OERandomStarts
        """
        this = _oeshape.new_OERandomStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OERandomStarts
    __del__ = lambda self: None

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


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


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


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


    def GetMaxRandomTranslation(self) -> "double":
        """GetMaxRandomTranslation(OERandomStarts self) -> double"""
        return _oeshape.OERandomStarts_GetMaxRandomTranslation(self)


    def SetRandomSeed(self, argSeed: 'unsigned int const') -> "void":
        """SetRandomSeed(OERandomStarts self, unsigned int const argSeed)"""
        return _oeshape.OERandomStarts_SetRandomSeed(self, argSeed)


    def GetRandomSeed(self) -> "unsigned int":
        """GetRandomSeed(OERandomStarts self) -> unsigned int"""
        return _oeshape.OERandomStarts_GetRandomSeed(self)


    def CreateCopy(self) -> "OEShape::OERandomStarts *":
        """CreateCopy(OERandomStarts self) -> OERandomStarts"""
        return _oeshape.OERandomStarts_CreateCopy(self)

OERandomStarts_swigregister = _oeshape.OERandomStarts_swigregister
OERandomStarts_swigregister(OERandomStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OECartesianStarts self) -> OECartesianStarts
        __init__(OEShape::OECartesianStarts self, OECartesianStarts argStarts) -> OECartesianStarts
        """
        this = _oeshape.new_OECartesianStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OECartesianStarts
    __del__ = lambda self: None

    def SetStartPoints(self, argPoints: 'double const *', argNumPoints: 'unsigned int') -> "void":
        """SetStartPoints(OECartesianStarts self, double const * argPoints, unsigned int argNumPoints)"""
        return _oeshape.OECartesianStarts_SetStartPoints(self, argPoints, argNumPoints)


    def GetStartPoints(self, argPoints: 'double *') -> "bool":
        """GetStartPoints(OECartesianStarts self, double * argPoints) -> bool"""
        return _oeshape.OECartesianStarts_GetStartPoints(self, argPoints)


    def ClearStartPoints(self) -> "void":
        """ClearStartPoints(OECartesianStarts self)"""
        return _oeshape.OECartesianStarts_ClearStartPoints(self)


    def GetNumStartPoints(self) -> "unsigned int":
        """GetNumStartPoints(OECartesianStarts self) -> unsigned int"""
        return _oeshape.OECartesianStarts_GetNumStartPoints(self)


    def CreateCopy(self) -> "OEShape::OECartesianStarts *":
        """CreateCopy(OECartesianStarts self) -> OECartesianStarts"""
        return _oeshape.OECartesianStarts_CreateCopy(self)

OECartesianStarts_swigregister = _oeshape.OECartesianStarts_swigregister
OECartesianStarts_swigregister(OECartesianStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEQuatStarts self) -> OEQuatStarts
        __init__(OEShape::OEQuatStarts self, OEQuatStarts argStarts) -> OEQuatStarts
        """
        this = _oeshape.new_OEQuatStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEQuatStarts
    __del__ = lambda self: None

    def Setup(self, argFitMol: 'OEMolBase', argTrans: 'OETrans') -> "unsigned int":
        """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":
        """SetStarts(OEQuatStarts self, double const * argQuats, unsigned int argNumStarts)"""
        return _oeshape.OEQuatStarts_SetStarts(self, argQuats, argNumStarts)


    def ClearStarts(self) -> "void":
        """ClearStarts(OEQuatStarts self)"""
        return _oeshape.OEQuatStarts_ClearStarts(self)


    def CreateCopy(self) -> "OEShape::OEQuatStarts *":
        """CreateCopy(OEQuatStarts self) -> OEQuatStarts"""
        return _oeshape.OEQuatStarts_CreateCopy(self)

OEQuatStarts_swigregister = _oeshape.OEQuatStarts_swigregister
OEQuatStarts_swigregister(OEQuatStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEAsIsStarts self) -> OEAsIsStarts
        __init__(OEShape::OEAsIsStarts self, OEAsIsStarts argStarts) -> OEAsIsStarts
        """
        this = _oeshape.new_OEAsIsStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEAsIsStarts
    __del__ = lambda self: None

    def Setup(self, argFitMol: 'OEMolBase', argTrans: 'OETrans') -> "unsigned int":
        """Setup(OEAsIsStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OEAsIsStarts_Setup(self, argFitMol, argTrans)


    def CreateCopy(self) -> "OEShape::OEAsIsStarts *":
        """CreateCopy(OEAsIsStarts self) -> OEAsIsStarts"""
        return _oeshape.OEAsIsStarts_CreateCopy(self)

OEAsIsStarts_swigregister = _oeshape.OEAsIsStarts_swigregister
OEAsIsStarts_swigregister(OEAsIsStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OESubrocsStarts self) -> OESubrocsStarts
        __init__(OEShape::OESubrocsStarts self, OESubrocsStarts argStarts) -> OESubrocsStarts
        """
        this = _oeshape.new_OESubrocsStarts(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OESubrocsStarts
    __del__ = lambda self: None

    def SetupRef(self, argRefMol: 'OEMolBase', argSymmetry: 'unsigned int const') -> "bool":
        """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":
        """Setup(OESubrocsStarts self, OEMolBase argFitMol, OETrans argTrans) -> unsigned int"""
        return _oeshape.OESubrocsStarts_Setup(self, argFitMol, argTrans)


    def CreateCopy(self) -> "OEShape::OESubrocsStarts *":
        """CreateCopy(OESubrocsStarts self) -> OESubrocsStarts"""
        return _oeshape.OESubrocsStarts_CreateCopy(self)

OESubrocsStarts_swigregister = _oeshape.OESubrocsStarts_swigregister
OESubrocsStarts_swigregister(OESubrocsStarts)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEOverlayOptions self) -> OEOverlayOptions
        __init__(OEShape::OEOverlayOptions self, OEOverlayOptions argOptions) -> OEOverlayOptions
        """
        this = _oeshape.new_OEOverlayOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEOverlayOptions
    __del__ = lambda self: None

    def GetMaxOptSteps(self) -> "unsigned int":
        """GetMaxOptSteps(OEOverlayOptions self) -> unsigned int"""
        return _oeshape.OEOverlayOptions_GetMaxOptSteps(self)


    def SetMaxOptSteps(self, value: 'unsigned int const') -> "bool":
        """SetMaxOptSteps(OEOverlayOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEOverlayOptions_SetMaxOptSteps(self, value)


    def SetOverlapFunc(self, argOverlapFunc: 'OEOverlapFuncBase') -> "void":
        """SetOverlapFunc(OEOverlayOptions self, OEOverlapFuncBase argOverlapFunc)"""
        return _oeshape.OEOverlayOptions_SetOverlapFunc(self, argOverlapFunc)


    def GetOverlapFunc(self) -> "OEShape::OEOverlapFuncBase const &":
        """GetOverlapFunc(OEOverlayOptions self) -> OEOverlapFuncBase"""
        return _oeshape.OEOverlayOptions_GetOverlapFunc(self)


    def SetStarts(self, argStarts: 'OEStarts') -> "void":
        """SetStarts(OEOverlayOptions self, OEStarts argStarts)"""
        return _oeshape.OEOverlayOptions_SetStarts(self, argStarts)


    def GetStarts(self) -> "OEShape::OEStarts const &":
        """GetStarts(OEOverlayOptions self) -> OEStarts"""
        return _oeshape.OEOverlayOptions_GetStarts(self)


    def CreateCopy(self) -> "OEShape::OEOverlayOptions *":
        """CreateCopy(OEOverlayOptions self) -> OEOverlayOptions"""
        return _oeshape.OEOverlayOptions_CreateCopy(self)

OEOverlayOptions_swigregister = _oeshape.OEOverlayOptions_swigregister
OEOverlayOptions_swigregister(OEOverlayOptions)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEOverlay self, OEOverlayOptions argOptions) -> OEOverlay
        __init__(OEShape::OEOverlay self) -> OEOverlay
        __init__(OEShape::OEOverlay self, OEOverlay argOverlay) -> OEOverlay
        """
        this = _oeshape.new_OEOverlay(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEOverlay
    __del__ = lambda self: None

    def GetOverlayOptions(self) -> "OEShape::OEOverlayOptions const &":
        """GetOverlayOptions(OEOverlay self) -> OEOverlayOptions"""
        return _oeshape.OEOverlay_GetOverlayOptions(self)


    def SetupRef(self, *args) -> "bool":
        """
        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, argFitMol: 'OEMCMolBase') -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        """Overlay(OEOverlay self, OEMCMolBase argFitMol) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults > *"""
        return _oeshape.OEOverlay_Overlay(self, argFitMol)


    def BestOverlay(self, *args) -> "bool":
        """
        BestOverlay(OEOverlay self, OEBestOverlayScore argScore, OEMCMolBase argFitMol, OEBestOverlayScoreSorterPred argPred) -> bool
        BestOverlay(OEOverlay self, OEBestOverlayScore argScore, OEMCMolBase argFitMol) -> bool
        """
        return _oeshape.OEOverlay_BestOverlay(self, *args)

OEOverlay_swigregister = _oeshape.OEOverlay_swigregister
OEOverlay_swigregister(OEOverlay)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEMultiRefOverlay self, OEOverlayOptions argOptions) -> OEMultiRefOverlay
        __init__(OEShape::OEMultiRefOverlay self) -> OEMultiRefOverlay
        __init__(OEShape::OEMultiRefOverlay self, OEMultiRefOverlay argOverlay) -> OEMultiRefOverlay
        """
        this = _oeshape.new_OEMultiRefOverlay(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEMultiRefOverlay
    __del__ = lambda self: None

    def GetOverlayOptions(self) -> "OEShape::OEOverlayOptions const &":
        """GetOverlayOptions(OEMultiRefOverlay self) -> OEOverlayOptions"""
        return _oeshape.OEMultiRefOverlay_GetOverlayOptions(self)


    def SetupRef(self, argRefMol: 'OEMCMolBase') -> "bool":
        """SetupRef(OEMultiRefOverlay self, OEMCMolBase argRefMol) -> bool"""
        return _oeshape.OEMultiRefOverlay_SetupRef(self, argRefMol)


    def Overlay(self, argFitMol: 'OEMCMolBase') -> "OESystem::OEIterBase< OEShape::OEBestOverlayResults > *":
        """Overlay(OEMultiRefOverlay self, OEMCMolBase argFitMol) -> OESystem::OEIterBase< OEShape::OEBestOverlayResults > *"""
        return _oeshape.OEMultiRefOverlay_Overlay(self, argFitMol)


    def BestOverlay(self, *args) -> "bool":
        """
        BestOverlay(OEMultiRefOverlay self, OEBestOverlayScore argScore, OEMCMolBase argFitMol, OEBestOverlayScoreSorterPred argPred) -> bool
        BestOverlay(OEMultiRefOverlay self, OEBestOverlayScore argScore, OEMCMolBase argFitMol) -> bool
        """
        return _oeshape.OEMultiRefOverlay_BestOverlay(self, *args)

OEMultiRefOverlay_swigregister = _oeshape.OEMultiRefOverlay_swigregister
OEMultiRefOverlay_swigregister(OEMultiRefOverlay)


def OEGetMomentsOfInertiaTransform(*args) -> "unsigned int":
    """
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OEMolBase argMol, double const argThreshold=0.15) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OEMolBase argMol) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OESystem::OEScalarGrid const & argGrid, double const argThreshold=0.15) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OESystem::OEScalarGrid const & argGrid) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OEShapeQuery argQuery, double const argThreshold=0.15) -> unsigned int
    OEGetMomentsOfInertiaTransform(OETrans argTransform, OEShapeQuery argQuery) -> unsigned int
    """
    return _oeshape.OEGetMomentsOfInertiaTransform(*args)

def OEOrientByMomentsOfInertia(*args) -> "unsigned int":
    """
    OEOrientByMomentsOfInertia(OEMolBase argMol, OETrans argTransform, double const argThreshold=0.15) -> unsigned int
    OEOrientByMomentsOfInertia(OEMolBase argMol, OETrans argTransform) -> unsigned int
    OEOrientByMomentsOfInertia(OESystem::OEScalarGrid & argGrid, OETrans argTransform, double const argThreshold=0.15) -> unsigned int
    OEOrientByMomentsOfInertia(OESystem::OEScalarGrid & argGrid, OETrans argTransform) -> unsigned int
    OEOrientByMomentsOfInertia(OEShapeQuery argQuery, OETrans argTransform, double const argThreshold=0.15) -> unsigned int
    OEOrientByMomentsOfInertia(OEShapeQuery argQuery, OETrans argTransform) -> unsigned int
    """
    return _oeshape.OEOrientByMomentsOfInertia(*args)
class OEROCSResultIter(object):
    """Proxy of C++ OESystem::OEIter<(OEShape::OEROCSResult)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(OEShape::OEROCSResult)> self) -> OEROCSResultIter
        __init__(OESystem::OEIter<(OEShape::OEROCSResult)> self, OEROCSResultIter rhs) -> OEROCSResultIter
        __init__(OESystem::OEIter<(OEShape::OEROCSResult)> self, OESystem::OEIterBase< OEShape::OEROCSResult > * rhs) -> OEROCSResultIter
        __init__(OESystem::OEIter<(OEShape::OEROCSResult)> self, OESystem::OEIterBase< OESystem::OEIter< OEShape::OEROCSResult >::NonConstA > * rhs) -> OEROCSResultIter
        """
        this = _oeshape.new_OEROCSResultIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEROCSResultIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEShape::OEROCSResult > *":
        """Copy(OEROCSResultIter self) -> OESystem::OEIterBase< OEShape::OEROCSResult > *"""
        return _oeshape.OEROCSResultIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        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":
        """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 > &":
        """ToFirst(OEROCSResultIter self) -> OEROCSResultIter"""
        return _oeshape.OEROCSResultIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        """ToLast(OEROCSResultIter self) -> OEROCSResultIter"""
        return _oeshape.OEROCSResultIter_ToLast(self)


    def __ref__(self) -> "OEShape::OEROCSResult &":
        """__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 *":
        """next(OEROCSResultIter self) -> PyObject *"""
        return _oeshape.OEROCSResultIter_next(self)


    def Target(self) -> "OEShape::OEROCSResult &":
        """Target(OEROCSResultIter self) -> OEROCSResult"""
        return _oeshape.OEROCSResultIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        """
        Next(OEROCSResultIter self) -> OEROCSResultIter
        Next(OEROCSResultIter self, int i) -> OEROCSResultIter
        """
        return _oeshape.OEROCSResultIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEShape::OEROCSResult > &":
        """
        Prev(OEROCSResultIter self) -> OEROCSResultIter
        Prev(OEROCSResultIter self, int i) -> OEROCSResultIter
        """
        return _oeshape.OEROCSResultIter_Prev(self, *args)

OEROCSResultIter_swigregister = _oeshape.OEROCSResultIter_swigregister
OEROCSResultIter_swigregister(OEROCSResultIter)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEROCSOptions self) -> OEROCSOptions
        __init__(OEShape::OEROCSOptions self, OEROCSOptions argRocs) -> OEROCSOptions
        """
        this = _oeshape.new_OEROCSOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEROCSOptions
    __del__ = lambda self: None

    def GetPerformPrep(self) -> "bool":
        """GetPerformPrep(OEROCSOptions self) -> bool"""
        return _oeshape.OEROCSOptions_GetPerformPrep(self)


    def SetPerformPrep(self, value: 'bool const') -> "bool":
        """SetPerformPrep(OEROCSOptions self, bool const value) -> bool"""
        return _oeshape.OEROCSOptions_SetPerformPrep(self, value)


    def GetUseMaxHits(self) -> "bool":
        """GetUseMaxHits(OEROCSOptions self) -> bool"""
        return _oeshape.OEROCSOptions_GetUseMaxHits(self)


    def SetUseMaxHits(self, value: 'bool const') -> "bool":
        """SetUseMaxHits(OEROCSOptions self, bool const value) -> bool"""
        return _oeshape.OEROCSOptions_SetUseMaxHits(self, value)


    def GetMaxHits(self) -> "unsigned int":
        """GetMaxHits(OEROCSOptions self) -> unsigned int"""
        return _oeshape.OEROCSOptions_GetMaxHits(self)


    def SetMaxHits(self, value: 'unsigned int const') -> "bool":
        """SetMaxHits(OEROCSOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEROCSOptions_SetMaxHits(self, value)


    def GetNumBestHits(self) -> "unsigned int":
        """GetNumBestHits(OEROCSOptions self) -> unsigned int"""
        return _oeshape.OEROCSOptions_GetNumBestHits(self)


    def SetNumBestHits(self, value: 'unsigned int const') -> "bool":
        """SetNumBestHits(OEROCSOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEROCSOptions_SetNumBestHits(self, value)


    def GetConfsPerHit(self) -> "unsigned int":
        """GetConfsPerHit(OEROCSOptions self) -> unsigned int"""
        return _oeshape.OEROCSOptions_GetConfsPerHit(self)


    def SetConfsPerHit(self, value: 'unsigned int const') -> "bool":
        """SetConfsPerHit(OEROCSOptions self, unsigned int const value) -> bool"""
        return _oeshape.OEROCSOptions_SetConfsPerHit(self, value)


    def SetOverlayOptions(self, opts: 'OEOverlayOptions') -> "void":
        """SetOverlayOptions(OEROCSOptions self, OEOverlayOptions opts)"""
        return _oeshape.OEROCSOptions_SetOverlayOptions(self, opts)


    def GetOverlayOptions(self, *args) -> "OEShape::OEOverlayOptions const &":
        """
        GetOverlayOptions(OEROCSOptions self) -> OEOverlayOptions
        GetOverlayOptions(OEROCSOptions self) -> OEOverlayOptions
        """
        return _oeshape.OEROCSOptions_GetOverlayOptions(self, *args)


    def SetRankPredicate(self, argPred: 'OEBestOverlayScoreSorterPred') -> "void":
        """SetRankPredicate(OEROCSOptions self, OEBestOverlayScoreSorterPred argPred)"""
        return _oeshape.OEROCSOptions_SetRankPredicate(self, argPred)


    def GetRankPredicate(self) -> "OESystem::OEBinaryPredicate< OEShape::OEBestOverlayScore,OEShape::OEBestOverlayScore > const &":
        """GetRankPredicate(OEROCSOptions self) -> OEBestOverlayScoreSorterPred"""
        return _oeshape.OEROCSOptions_GetRankPredicate(self)


    def AddCutoff(self, argPred: 'OEOverlayScoreCutoffPred') -> "void":
        """AddCutoff(OEROCSOptions self, OEOverlayScoreCutoffPred argPred)"""
        return _oeshape.OEROCSOptions_AddCutoff(self, argPred)


    def ClearCutoffs(self) -> "void":
        """ClearCutoffs(OEROCSOptions self)"""
        return _oeshape.OEROCSOptions_ClearCutoffs(self)


    def HasCutoff(self) -> "bool":
        """HasCutoff(OEROCSOptions self) -> bool"""
        return _oeshape.OEROCSOptions_HasCutoff(self)


    def MeetsCutoff(self, argScore: 'OEBestOverlayScore') -> "bool":
        """MeetsCutoff(OEROCSOptions self, OEBestOverlayScore argScore) -> bool"""
        return _oeshape.OEROCSOptions_MeetsCutoff(self, argScore)


    def CreateCopy(self) -> "OEShape::OEROCSOptions *":
        """CreateCopy(OEROCSOptions self) -> OEROCSOptions"""
        return _oeshape.OEROCSOptions_CreateCopy(self)

OEROCSOptions_swigregister = _oeshape.OEROCSOptions_swigregister
OEROCSOptions_swigregister(OEROCSOptions)

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

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    m_nFitMolIdx = _swig_property(_oeshape.OEROCSScore_m_nFitMolIdx_get, _oeshape.OEROCSScore_m_nFitMolIdx_set)
    m_nAscIdx = _swig_property(_oeshape.OEROCSScore_m_nAscIdx_get, _oeshape.OEROCSScore_m_nAscIdx_set)

    def __init__(self, *args):
        """
        __init__(OEShape::OEROCSScore self, OEBestOverlayScore argScore, unsigned int const argFitIdx) -> OEROCSScore
        __init__(OEShape::OEROCSScore self, OEROCSScore argScore) -> OEROCSScore
        """
        this = _oeshape.new_OEROCSScore(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEROCSScore
    __del__ = lambda self: None
OEROCSScore_swigregister = _oeshape.OEROCSScore_swigregister
OEROCSScore_swigregister(OEROCSScore)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEROCSResult self) -> OEROCSResult
        __init__(OEShape::OEROCSResult self, OEBestOverlayScore argScore, OEMCMolBase argFitMol) -> OEROCSResult
        __init__(OEShape::OEROCSResult self, OEROCSResult argResult) -> OEROCSResult
        """
        this = _oeshape.new_OEROCSResult(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEROCSResult
    __del__ = lambda self: None

    def AddScore(self, argScore: 'OEBestOverlayScore', argFitMol: 'OEMCMolBase') -> "void":
        """AddScore(OEROCSResult self, OEBestOverlayScore argScore, OEMCMolBase argFitMol)"""
        return _oeshape.OEROCSResult_AddScore(self, argScore, argFitMol)


    def GetOverlayConf(self) -> "OEChem::OEMolBase const &":
        """GetOverlayConf(OEROCSResult self) -> OEMolBase"""
        return _oeshape.OEROCSResult_GetOverlayConf(self)


    def GetOverlayConfs(self) -> "OEChem::OEMCMolBase const &":
        """GetOverlayConfs(OEROCSResult self) -> OEMCMolBase"""
        return _oeshape.OEROCSResult_GetOverlayConfs(self)

OEROCSResult_swigregister = _oeshape.OEROCSResult_swigregister
OEROCSResult_swigregister(OEROCSResult)

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

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

    def __init__(self, *args):
        """
        __init__(OEShape::OEROCS self, OEROCSOptions argOptions) -> OEROCS
        __init__(OEShape::OEROCS self) -> OEROCS
        """
        this = _oeshape.new_OEROCS(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEROCS
    __del__ = lambda self: None

    def GetROCSOptions(self) -> "OEShape::OEROCSOptions const &":
        """GetROCSOptions(OEROCS self) -> OEROCSOptions"""
        return _oeshape.OEROCS_GetROCSOptions(self)


    def SetDatabase(self, *args) -> "bool":
        """
        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":
        """AddMolecule(OEROCS self, OEMCMolBase argMol) -> unsigned int"""
        return _oeshape.OEROCS_AddMolecule(self, argMol)


    def ClearMolecules(self) -> "void":
        """ClearMolecules(OEROCS self)"""
        return _oeshape.OEROCS_ClearMolecules(self)


    def Overlay(self, *args) -> "OESystem::OEIterBase< OEShape::OEROCSResult > *":
        """
        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)

OEROCS_swigregister = _oeshape.OEROCS_swigregister
OEROCS_swigregister(OEROCS)


def OEROCSOverlay(*args) -> "bool":
    """
    OEROCSOverlay(OEROCSResult argResult, OEMCMolBase argQuery, OEMCMolBase argFitMol, OEROCSOptions argOptions) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMCMolBase argQuery, OEMCMolBase argFitMol) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMolBase argQuery, OEMCMolBase argFitMol, OEROCSOptions argOptions) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMolBase argQuery, OEMCMolBase argFitMol) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMolBase argQuery, OEMolBase argFitMol, OEROCSOptions argOptions) -> bool
    OEROCSOverlay(OEROCSResult argResult, OEMolBase argQuery, OEMolBase argFitMol) -> bool
    """
    return _oeshape.OEROCSOverlay(*args)
OE_OESHAPE_VERSION = _oeshape.OE_OESHAPE_VERSION

def OEShapeGetRelease() -> "char const *":
    """OEShapeGetRelease() -> char const *"""
    return _oeshape.OEShapeGetRelease()

def OEShapeGetVersion() -> "unsigned int":
    """OEShapeGetVersion() -> unsigned int"""
    return _oeshape.OEShapeGetVersion()

def OEShapeGetArch() -> "char const *":
    """OEShapeGetArch() -> char const *"""
    return _oeshape.OEShapeGetArch()

def OEShapeGetPlatform() -> "char const *":
    """OEShapeGetPlatform() -> char const *"""
    return _oeshape.OEShapeGetPlatform()

def OEShapeIsLicensed(feature: 'char const *'=None, expdate: 'unsigned int *'=None) -> "bool":
    """
    OEShapeIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool
    OEShapeIsLicensed(char const * feature=None) -> bool
    OEShapeIsLicensed() -> bool
    """
    return _oeshape.OEShapeIsLicensed(feature, expdate)

def OEShapeGetLicensee(*args) -> "std::string":
    """
    OEShapeGetLicensee(std::string & licensee) -> bool
    OEShapeGetLicensee() -> std::string
    """
    return _oeshape.OEShapeGetLicensee(*args)

def OEShapeGetSite(*args) -> "std::string":
    """
    OEShapeGetSite(std::string & site) -> bool
    OEShapeGetSite() -> std::string
    """
    return _oeshape.OEShapeGetSite(*args)

def OESetShapeQueryValue(rec: 'OERecord', field: 'OEShapeQueryField', sq: 'OEShapeQuery') -> "bool":
    """OESetShapeQueryValue(OERecord rec, OEShapeQueryField field, OEShapeQuery sq) -> bool"""
    return _oeshape.OESetShapeQueryValue(rec, field, sq)

def OEInitSQFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitSQFieldHandler() -> OEFieldTypeHandler"""
    return _oeshape.OEInitSQFieldHandler()

def OEInitSQVecFieldHandler() -> "OEDataFlow::OEFieldTypeHandler *":
    """OEInitSQVecFieldHandler() -> OEFieldTypeHandler"""
    return _oeshape.OEInitSQVecFieldHandler()
class OEShapeQueryType(oechem.OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEFieldType<(OEShape::OEShapeQuery)> class."""

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

    def format(sq: 'OEShapeQuery') -> "std::string":
        """format(OEShapeQuery sq) -> std::string"""
        return _oeshape.OEShapeQueryType_format(sq)

    format = staticmethod(format)

    def is_cacheable(self) -> "bool":
        """is_cacheable(OEShapeQueryType self) -> bool"""
        return _oeshape.OEShapeQueryType_is_cacheable(self)


    def get_name(self) -> "std::string":
        """get_name(OEShapeQueryType self) -> std::string"""
        return _oeshape.OEShapeQueryType_get_name(self)


    def bytes_to_json(self, bytes: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OEShapeQueryType self, OEUCharVector bytes) -> std::string"""
        return _oeshape.OEShapeQueryType_bytes_to_json(self, bytes)


    def __init__(self):
        """__init__(OEDataFlow::OEFieldType<(OEShape::OEShapeQuery)> self) -> OEShapeQueryType"""
        this = _oeshape.new_OEShapeQueryType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeQueryType
    __del__ = lambda self: None
OEShapeQueryType_swigregister = _oeshape.OEShapeQueryType_swigregister
OEShapeQueryType_swigregister(OEShapeQueryType)
cvar = _oeshape.cvar

def OEShapeQueryType_format(sq: 'OEShapeQuery') -> "std::string":
    """OEShapeQueryType_format(OEShapeQuery sq) -> std::string"""
    return _oeshape.OEShapeQueryType_format(sq)

class OEShapeQueryVecType(oechem.OEFieldTypeHandler):
    """Proxy of C++ OEDataFlow::OEVectorFieldType<(OEShape::OEShapeQuery)> class."""

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

    def format(val: 'std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > const &') -> "std::string":
        """format(std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > const & val) -> std::string"""
        return _oeshape.OEShapeQueryVecType_format(val)

    format = staticmethod(format)

    def GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > >":
        """
        GetCopyForCache(std::vector< OEShape::OEShapeQuery,std::allocator< OEShape::OEShapeQuery > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > >
        GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > >
        """
        return _oeshape.OEShapeQueryVecType_GetCopyForCache(*args)

    GetCopyForCache = staticmethod(GetCopyForCache)

    def get_name(self) -> "std::string":
        """get_name(OEShapeQueryVecType self) -> std::string"""
        return _oeshape.OEShapeQueryVecType_get_name(self)


    def bytes_to_json(self, bytes: 'OEUCharVector') -> "std::string":
        """bytes_to_json(OEShapeQueryVecType self, OEUCharVector bytes) -> std::string"""
        return _oeshape.OEShapeQueryVecType_bytes_to_json(self, bytes)


    def __init__(self):
        """__init__(OEDataFlow::OEVectorFieldType<(OEShape::OEShapeQuery)> self) -> OEShapeQueryVecType"""
        this = _oeshape.new_OEShapeQueryVecType()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeQueryVecType
    __del__ = lambda self: None
OEShapeQueryVecType_swigregister = _oeshape.OEShapeQueryVecType_swigregister
OEShapeQueryVecType_swigregister(OEShapeQueryVecType)

def OEShapeQueryVecType_format(val: 'std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > const &') -> "std::string":
    """OEShapeQueryVecType_format(std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > const & val) -> std::string"""
    return _oeshape.OEShapeQueryVecType_format(val)

def OEShapeQueryVecType_GetCopyForCache(*args) -> "std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > >":
    """
    GetCopyForCache(std::vector< OEShape::OEShapeQuery,std::allocator< OEShape::OEShapeQuery > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > >
    OEShapeQueryVecType_GetCopyForCache(std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > const & val) -> std::shared_ptr< std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > >
    """
    return _oeshape.OEShapeQueryVecType_GetCopyForCache(*args)

class OEShapeQueryField(oechem.OEFieldBase):
    """Proxy of C++ OEDataFlow::OEField<(OEShape::OEShapeQuery)> class."""

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

    def __init__(self, *args):
        """
        __init__(OEDataFlow::OEField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEShapeQueryField
        __init__(OEDataFlow::OEField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEShapeQueryField
        __init__(OEDataFlow::OEField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta) -> OEShapeQueryField
        __init__(OEDataFlow::OEField<(OEShape::OEShapeQuery)> self, std::string const & name) -> OEShapeQueryField
        __init__(OEDataFlow::OEField<(OEShape::OEShapeQuery)> self, OEFieldBase other) -> OEShapeQueryField
        """
        this = _oeshape.new_OEShapeQueryField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, value: 'OEShapeQuery', data: 'OEUCharVector') -> "bool":
        """deserialize(OEShapeQueryField self, OEShapeQuery value, OEUCharVector data) -> bool"""
        return _oeshape.OEShapeQueryField_deserialize(self, value, data)


    def get_type(self) -> "OEDataFlow::OEFieldType< OEShape::OEShapeQuery >":
        """get_type(OEShapeQueryField self) -> OEShapeQueryType"""
        return _oeshape.OEShapeQueryField_get_type(self)

    __swig_destroy__ = _oeshape.delete_OEShapeQueryField
    __del__ = lambda self: None
OEShapeQueryField_swigregister = _oeshape.OEShapeQueryField_swigregister
OEShapeQueryField_swigregister(OEShapeQueryField)

class OEShapeQueryVecField(oechem.OEFieldBase):
    """Proxy of C++ OEDataFlow::OEVectorField<(OEShape::OEShapeQuery)> class."""

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

    def __init__(self, *args):
        """
        __init__(OEDataFlow::OEVectorField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEShapeQueryVecField
        __init__(OEDataFlow::OEVectorField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEShapeQueryVecField
        __init__(OEDataFlow::OEVectorField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta) -> OEShapeQueryVecField
        __init__(OEDataFlow::OEVectorField<(OEShape::OEShapeQuery)> self, std::string const & name) -> OEShapeQueryVecField
        __init__(OEDataFlow::OEVectorField<(OEShape::OEShapeQuery)> self, OEFieldBase f) -> OEShapeQueryVecField
        """
        this = _oeshape.new_OEShapeQueryVecField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def deserialize(self, *args) -> "bool":
        """
        deserialize(OEShapeQueryVecField self, std::vector< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery >,std::allocator< OEStdOptionalNamespace::optional< OEShape::OEShapeQuery > > > & 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 >":
        """get_type(OEShapeQueryVecField self) -> OEShapeQueryVecType"""
        return _oeshape.OEShapeQueryVecField_get_type(self)

    __swig_destroy__ = _oeshape.delete_OEShapeQueryVecField
    __del__ = lambda self: None
OEShapeQueryVecField_swigregister = _oeshape.OEShapeQueryVecField_swigregister
OEShapeQueryVecField_swigregister(OEShapeQueryVecField)

class OEShapeQueryMatchField(OEShapeQueryField):
    """Proxy of C++ OEDataFlow::OEMatchField<(OEShape::OEShapeQuery)> class."""

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

    def __init__(self, *args):
        """
        __init__(OEDataFlow::OEMatchField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEShapeQueryMatchField
        __init__(OEDataFlow::OEMatchField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEShapeQueryMatchField
        __init__(OEDataFlow::OEMatchField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta) -> OEShapeQueryMatchField
        __init__(OEDataFlow::OEMatchField<(OEShape::OEShapeQuery)> self, std::string const & name) -> OEShapeQueryMatchField
        """
        this = _oeshape.new_OEShapeQueryMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeQueryMatchField
    __del__ = lambda self: None
OEShapeQueryMatchField_swigregister = _oeshape.OEShapeQueryMatchField_swigregister
OEShapeQueryMatchField_swigregister(OEShapeQueryMatchField)

class OEShapeQueryVecMatchField(OEShapeQueryVecField):
    """Proxy of C++ OEDataFlow::OEMatchVectorField<(OEShape::OEShapeQuery)> class."""

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

    def __init__(self, *args):
        """
        __init__(OEDataFlow::OEMatchVectorField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False, bool nullable=False) -> OEShapeQueryVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta, bool readonly=False) -> OEShapeQueryVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEShape::OEShapeQuery)> self, std::string const & name, OEFieldMeta meta) -> OEShapeQueryVecMatchField
        __init__(OEDataFlow::OEMatchVectorField<(OEShape::OEShapeQuery)> self, std::string const & name) -> OEShapeQueryVecMatchField
        """
        this = _oeshape.new_OEShapeQueryVecMatchField(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oeshape.delete_OEShapeQueryVecMatchField
    __del__ = lambda self: None
OEShapeQueryVecMatchField_swigregister = _oeshape.OEShapeQueryVecMatchField_swigregister
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,)



