# 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')

    _oedocking = libs.OEGetModule('_oedocking3506')
    return _oedocking

_oedocking = 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 __no_op(*args) -> "void":
    return _oedocking.__no_op(*args)
__no_op = _oedocking.__no_op
ScoreID_Shapegauss = _oedocking.ScoreID_Shapegauss
ScoreID_PLP = _oedocking.ScoreID_PLP
ScoreID_Chemgauss3 = _oedocking.ScoreID_Chemgauss3
ScoreID_Chemscore = _oedocking.ScoreID_Chemscore
ScoreID_OldChemscore = _oedocking.ScoreID_OldChemscore
ScoreID_Screenscore = _oedocking.ScoreID_Screenscore
ScoreID_CGO = _oedocking.ScoreID_CGO
ScoreID_CGT = _oedocking.ScoreID_CGT
ScoreID_Chemgauss4 = _oedocking.ScoreID_Chemgauss4
ScoreID_Shapegauss3 = _oedocking.ScoreID_Shapegauss3
ScoreID_MAX = _oedocking.ScoreID_MAX
OEDockMethod_INVALID = _oedocking.OEDockMethod_INVALID
OEDockMethod_Shapegauss = _oedocking.OEDockMethod_Shapegauss
OEDockMethod_PLP = _oedocking.OEDockMethod_PLP
OEDockMethod_Chemscore = _oedocking.OEDockMethod_Chemscore
OEDockMethod_Chemgauss3 = _oedocking.OEDockMethod_Chemgauss3
OEDockMethod_Chemgauss4 = _oedocking.OEDockMethod_Chemgauss4
OEDockMethod_Hybrid1 = _oedocking.OEDockMethod_Hybrid1
OEDockMethod_Hybrid2 = _oedocking.OEDockMethod_Hybrid2

OEDockMethod_Default = OEDockMethod_Chemgauss4


OEDockMethod_Chemgauss = OEDockMethod_Chemgauss4


OEDockMethod_Hybrid = OEDockMethod_Hybrid2

OESearchResolution_INVALID = _oedocking.OESearchResolution_INVALID
OESearchResolution_High = _oedocking.OESearchResolution_High
OESearchResolution_Standard = _oedocking.OESearchResolution_Standard
OESearchResolution_Low = _oedocking.OESearchResolution_Low

OESearchResolution_Default = OESearchResolution_Standard

OEScoreType_INVALID = _oedocking.OEScoreType_INVALID
OEScoreType_Shapegauss = _oedocking.OEScoreType_Shapegauss
OEScoreType_PLP = _oedocking.OEScoreType_PLP
OEScoreType_Chemgauss3 = _oedocking.OEScoreType_Chemgauss3
OEScoreType_Chemgauss4 = _oedocking.OEScoreType_Chemgauss4
OEScoreType_Chemscore = _oedocking.OEScoreType_Chemscore

OEScoreType_Default = OEScoreType_Chemgauss4


OEScoreType_Chemgauss = OEScoreType_Chemgauss4

OEProteinConstraintType_Unknown = _oedocking.OEProteinConstraintType_Unknown
OEProteinConstraintType_Chelator = _oedocking.OEProteinConstraintType_Chelator
OEProteinConstraintType_Acceptor = _oedocking.OEProteinConstraintType_Acceptor
OEProteinConstraintType_Donor = _oedocking.OEProteinConstraintType_Donor
OEProteinConstraintType_Contact = _oedocking.OEProteinConstraintType_Contact
OEProteinConstraintType_Lipophilic = _oedocking.OEProteinConstraintType_Lipophilic
OENegativeImageType_INVALID = _oedocking.OENegativeImageType_INVALID
OENegativeImageType_LargeShape = _oedocking.OENegativeImageType_LargeShape
OENegativeImageType_StandardShape = _oedocking.OENegativeImageType_StandardShape
OENegativeImageType_SmallShape = _oedocking.OENegativeImageType_SmallShape

OENegativeImageType_Default = OENegativeImageType_StandardShape

OEDockingReturnCode_Success = _oedocking.OEDockingReturnCode_Success
OEDockingReturnCode_NotInitialized = _oedocking.OEDockingReturnCode_NotInitialized
OEDockingReturnCode_EmptyLigand = _oedocking.OEDockingReturnCode_EmptyLigand
OEDockingReturnCode_EmptyProtein = _oedocking.OEDockingReturnCode_EmptyProtein
OEDockingReturnCode_TypingError = _oedocking.OEDockingReturnCode_TypingError
OEDockingReturnCode_GridSetupError = _oedocking.OEDockingReturnCode_GridSetupError
OEDockingReturnCode_CoordError = _oedocking.OEDockingReturnCode_CoordError
OEDockingReturnCode_NoConstraintMatch = _oedocking.OEDockingReturnCode_NoConstraintMatch
OEDockingReturnCode_NoValidPoses = _oedocking.OEDockingReturnCode_NoValidPoses
OEDockingReturnCode_Aborted = _oedocking.OEDockingReturnCode_Aborted
OEDockingReturnCode_OutsideGrid = _oedocking.OEDockingReturnCode_OutsideGrid
OEDockingReturnCode_OptimizationError = _oedocking.OEDockingReturnCode_OptimizationError
OEDockingReturnCode_InvalidScore = _oedocking.OEDockingReturnCode_InvalidScore
OEDockingReturnCode_ScoreError = _oedocking.OEDockingReturnCode_ScoreError
OEDockingReturnCode_Failure = _oedocking.OEDockingReturnCode_Failure
OEDockingReturnCode_ConformerGenError = _oedocking.OEDockingReturnCode_ConformerGenError
OEDockingReturnCode_NoValidNonClashPoses = _oedocking.OEDockingReturnCode_NoValidNonClashPoses
OEAllowedClashType_NONE = _oedocking.OEAllowedClashType_NONE
OEAllowedClashType_HYDROGEN = _oedocking.OEAllowedClashType_HYDROGEN
OEAllowedClashType_ANY = _oedocking.OEAllowedClashType_ANY
OEPoseRelaxMode_NONE = _oedocking.OEPoseRelaxMode_NONE
OEPoseRelaxMode_CLASHED = _oedocking.OEPoseRelaxMode_CLASHED
OEPoseRelaxMode_ALL = _oedocking.OEPoseRelaxMode_ALL
OEPositMethod_UNKNOWN = _oedocking.OEPositMethod_UNKNOWN
OEPositMethod_SHAPEFIT = _oedocking.OEPositMethod_SHAPEFIT
OEPositMethod_HYBRID = _oedocking.OEPositMethod_HYBRID
OEPositMethod_FRED = _oedocking.OEPositMethod_FRED
OEPositMethod_MCS = _oedocking.OEPositMethod_MCS
OEPositMethod_SHAPEFIT_EXHAUSTIVE = _oedocking.OEPositMethod_SHAPEFIT_EXHAUSTIVE

OEPositMethod_ALL = OEPositMethod_SHAPEFIT|OEPositMethod_HYBRID|OEPositMethod_FRED|OEPositMethod_MCS

import openeye.oechem as oechem

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(OEProteinConstraint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFeature arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESphereBase arg, bool owned) -> PyObject *
    """
    return _oedocking.GetSWIG_NewPointerObj(*args)

def OEReceptorGetBoundLigand(rec: 'OEMolBase') -> "OEGraphMolWrapper":
    """OEReceptorGetBoundLigand(OEMolBase rec) -> OEGraphMol"""
    return _oedocking.OEReceptorGetBoundLigand(rec)
class OEDock(object):
    """Proxy of C++ OEDocking::OEDock 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__(OEDocking::OEDock self, unsigned int scoring, unsigned int resolution) -> OEDock
        __init__(OEDocking::OEDock self, unsigned int scoring) -> OEDock
        __init__(OEDocking::OEDock self) -> OEDock
        __init__(OEDocking::OEDock self, OEDock arg2) -> OEDock
        """
        this = _oedocking.new_OEDock(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEDock
    __del__ = lambda self: None

    def IsInitialized(self) -> "bool":
        """IsInitialized(OEDock self) -> bool"""
        return _oedocking.OEDock_IsInitialized(self)


    def Initialize(self, receptor: 'OEMolBase') -> "bool":
        """Initialize(OEDock self, OEMolBase receptor) -> bool"""
        return _oedocking.OEDock_Initialize(self, receptor)


    def DockMultiConformerMolecule(self, *args) -> "unsigned int":
        """
        DockMultiConformerMolecule(OEDock self, OEMCMolBase dockedMol, OEMCMolBase inputMol, unsigned int numPoses=1) -> unsigned int
        DockMultiConformerMolecule(OEDock self, OEMCMolBase dockedMol, OEMCMolBase inputMol) -> unsigned int
        DockMultiConformerMolecule(OEDock self, OEChem::OEMol & dockedMol, OEMCMolBase inputMol, unsigned int numPoses=1) -> unsigned int
        DockMultiConformerMolecule(OEDock self, OEChem::OEMol & dockedMol, OEMCMolBase inputMol) -> unsigned int
        DockMultiConformerMolecule(OEDock self, OEMolBase dockedMol, OEMCMolBase inputMol) -> unsigned int
        """
        return _oedocking.OEDock_DockMultiConformerMolecule(self, *args)


    def GetHighScoresAreBetter(self) -> "bool":
        """GetHighScoresAreBetter(OEDock self) -> bool"""
        return _oedocking.OEDock_GetHighScoresAreBetter(self)


    def GetName(self) -> "std::string":
        """GetName(OEDock self) -> std::string"""
        return _oedocking.OEDock_GetName(self)


    def GetComponentNames(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetComponentNames(OEDock self) -> OESystem::OEIterBase< std::string const > *"""
        return _oedocking.OEDock_GetComponentNames(self)


    def ScoreLigand(self, pose: 'OEMolBase') -> "float":
        """ScoreLigand(OEDock self, OEMolBase pose) -> float"""
        return _oedocking.OEDock_ScoreLigand(self, pose)


    def ScoreAtom(self, atom: 'OEAtomBase', pose: 'OEMolBase') -> "float":
        """ScoreAtom(OEDock self, OEAtomBase atom, OEMolBase pose) -> float"""
        return _oedocking.OEDock_ScoreAtom(self, atom, pose)


    def ScoreLigandComponent(self, pose: 'OEMolBase', compName: 'std::string') -> "float":
        """ScoreLigandComponent(OEDock self, OEMolBase pose, std::string compName) -> float"""
        return _oedocking.OEDock_ScoreLigandComponent(self, pose, compName)


    def ScoreAtomComponent(self, atom: 'OEAtomBase', pose: 'OEMolBase', compName: 'std::string') -> "float":
        """ScoreAtomComponent(OEDock self, OEAtomBase atom, OEMolBase pose, std::string compName) -> float"""
        return _oedocking.OEDock_ScoreAtomComponent(self, atom, pose, compName)


    def AnnotatePose(self, *args) -> "bool":
        """
        AnnotatePose(OEDock self, OEMolBase pose) -> bool
        AnnotatePose(OEDock self, OEMCMolBase pose) -> bool
        """
        return _oedocking.OEDock_AnnotatePose(self, *args)


    def CacheScoringSetup(self, receptor: 'OEMolBase', clearOldData: 'bool'=True) -> "bool":
        """
        CacheScoringSetup(OEDock self, OEMolBase receptor, bool clearOldData=True) -> bool
        CacheScoringSetup(OEDock self, OEMolBase receptor) -> bool
        """
        return _oedocking.OEDock_CacheScoringSetup(self, receptor, clearOldData)

OEDock_swigregister = _oedocking.OEDock_swigregister
OEDock_swigregister(OEDock)

class OEHybrid(OEDock):
    """Proxy of C++ OEDocking::OEHybrid 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__(OEDocking::OEHybrid self, unsigned int scoring, unsigned int resolution) -> OEHybrid
        __init__(OEDocking::OEHybrid self, unsigned int scoring) -> OEHybrid
        __init__(OEDocking::OEHybrid self) -> OEHybrid
        """
        this = _oedocking.new_OEHybrid(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEHybrid
    __del__ = lambda self: None
OEHybrid_swigregister = _oedocking.OEHybrid_swigregister
OEHybrid_swigregister(OEHybrid)


def OEDockMethodGetName(method: 'unsigned int') -> "std::string":
    """OEDockMethodGetName(unsigned int method) -> std::string"""
    return _oedocking.OEDockMethodGetName(method)

def OEDockMethodConfigure(itf: 'OEInterface', parameter: 'std::string') -> "bool":
    """OEDockMethodConfigure(OEInterface itf, std::string parameter) -> bool"""
    return _oedocking.OEDockMethodConfigure(itf, parameter)

def OEDockMethodGetValue(*args) -> "unsigned int":
    """
    OEDockMethodGetValue(std::string name) -> unsigned int
    OEDockMethodGetValue(OEInterface itf, std::string parameter) -> unsigned int
    """
    return _oedocking.OEDockMethodGetValue(*args)

def OESearchResolutionGetName(resolution: 'unsigned int') -> "std::string":
    """OESearchResolutionGetName(unsigned int resolution) -> std::string"""
    return _oedocking.OESearchResolutionGetName(resolution)

def OESearchResolutionConfigure(itf: 'OEInterface', parameter: 'std::string') -> "bool":
    """OESearchResolutionConfigure(OEInterface itf, std::string parameter) -> bool"""
    return _oedocking.OESearchResolutionConfigure(itf, parameter)

def OESearchResolutionGetValue(*args) -> "unsigned int":
    """
    OESearchResolutionGetValue(std::string name) -> unsigned int
    OESearchResolutionGetValue(OEInterface itf, std::string parameter) -> unsigned int
    """
    return _oedocking.OESearchResolutionGetValue(*args)

def OEScoreTypeGetName(scoring: 'unsigned int') -> "std::string":
    """OEScoreTypeGetName(unsigned int scoring) -> std::string"""
    return _oedocking.OEScoreTypeGetName(scoring)

def OEScoreTypeConfigure(itf: 'OEInterface', parameter: 'std::string') -> "bool":
    """OEScoreTypeConfigure(OEInterface itf, std::string parameter) -> bool"""
    return _oedocking.OEScoreTypeConfigure(itf, parameter)

def OEScoreTypeGetValue(*args) -> "unsigned int":
    """
    OEScoreTypeGetValue(std::string name) -> unsigned int
    OEScoreTypeGetValue(OEInterface itf, std::string parameter) -> unsigned int
    """
    return _oedocking.OEScoreTypeGetValue(*args)

def OEProteinConstraintTypeGetName(arg1: 'unsigned int') -> "std::string":
    """OEProteinConstraintTypeGetName(unsigned int arg1) -> std::string"""
    return _oedocking.OEProteinConstraintTypeGetName(arg1)

def OENegativeImageTypeGetName(arg1: 'unsigned int') -> "std::string":
    """OENegativeImageTypeGetName(unsigned int arg1) -> std::string"""
    return _oedocking.OENegativeImageTypeGetName(arg1)

def OENegativeImageTypeConfigure(itf: 'OEInterface', parameter: 'std::string') -> "bool":
    """OENegativeImageTypeConfigure(OEInterface itf, std::string parameter) -> bool"""
    return _oedocking.OENegativeImageTypeConfigure(itf, parameter)

def OENegativeImageTypeGetValue(*args) -> "unsigned int":
    """
    OENegativeImageTypeGetValue(std::string name) -> unsigned int
    OENegativeImageTypeGetValue(OEInterface itf, std::string parameter) -> unsigned int
    """
    return _oedocking.OENegativeImageTypeGetValue(*args)

def OEDockingReturnCodeGetName(rcode: 'unsigned int') -> "std::string":
    """OEDockingReturnCodeGetName(unsigned int rcode) -> std::string"""
    return _oedocking.OEDockingReturnCodeGetName(rcode)
class OEFeature(object):
    """Proxy of C++ OEDocking::OEFeature 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 GetSpheres(self, *args) -> "OESystem::OEIterBase< OEDocking::OESphereBase > *":
        """
        GetSpheres(OEFeature self) -> OESystem::OEIterBase< OEDocking::OESphereBase const >
        GetSpheres(OEFeature self) -> OESystem::OEIterBase< OEDocking::OESphereBase > *
        """
        return _oedocking.OEFeature_GetSpheres(self, *args)


    def AddSphere(self, *args) -> "OEDocking::OESphereBase *":
        """
        AddSphere(OEFeature self, OESphereBase arg2) -> OESphereBase
        AddSphere(OEFeature self) -> OESphereBase
        """
        return _oedocking.OEFeature_AddSphere(self, *args)


    def DeleteSphere(self, arg2: 'OESphereBase') -> "bool":
        """DeleteSphere(OEFeature self, OESphereBase arg2) -> bool"""
        return _oedocking.OEFeature_DeleteSphere(self, arg2)


    def NumSpheres(self) -> "unsigned int":
        """NumSpheres(OEFeature self) -> unsigned int"""
        return _oedocking.OEFeature_NumSpheres(self)


    def ClearSpheres(self) -> "bool":
        """ClearSpheres(OEFeature self) -> bool"""
        return _oedocking.OEFeature_ClearSpheres(self)


    def GetSmarts(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetSmarts(OEFeature self) -> OESystem::OEIterBase< std::string const > *"""
        return _oedocking.OEFeature_GetSmarts(self)


    def AddSmarts(self, Smarts: 'std::string') -> "bool":
        """AddSmarts(OEFeature self, std::string Smarts) -> bool"""
        return _oedocking.OEFeature_AddSmarts(self, Smarts)


    def DeleteSmarts(self, smarts: 'std::string') -> "bool":
        """DeleteSmarts(OEFeature self, std::string smarts) -> bool"""
        return _oedocking.OEFeature_DeleteSmarts(self, smarts)


    def NumSmarts(self) -> "unsigned int":
        """NumSmarts(OEFeature self) -> unsigned int"""
        return _oedocking.OEFeature_NumSmarts(self)


    def ClearSmarts(self) -> "bool":
        """ClearSmarts(OEFeature self) -> bool"""
        return _oedocking.OEFeature_ClearSmarts(self)


    def SetFeatureName(self, arg2: 'std::string') -> "void":
        """SetFeatureName(OEFeature self, std::string arg2)"""
        return _oedocking.OEFeature_SetFeatureName(self, arg2)


    def GetFeatureName(self) -> "std::string":
        """GetFeatureName(OEFeature self) -> std::string"""
        return _oedocking.OEFeature_GetFeatureName(self)


    def SetEnabled(self, enabled: 'bool') -> "void":
        """SetEnabled(OEFeature self, bool enabled)"""
        return _oedocking.OEFeature_SetEnabled(self, enabled)


    def GetEnabled(self) -> "bool":
        """GetEnabled(OEFeature self) -> bool"""
        return _oedocking.OEFeature_GetEnabled(self)


    def CreateCopy(self) -> "OEDocking::OEFeature *":
        """CreateCopy(OEFeature self) -> OEFeature"""
        return _oedocking.OEFeature_CreateCopy(self)

    __swig_destroy__ = _oedocking.delete_OEFeature
    __del__ = lambda self: None
OEFeature_swigregister = _oedocking.OEFeature_swigregister
OEFeature_swigregister(OEFeature)

class OECustomConstraints(object):
    """Proxy of C++ OEDocking::OECustomConstraints class."""

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

    def GetFeatures(self, *args) -> "OESystem::OEIterBase< OEDocking::OEFeature > *":
        """
        GetFeatures(OECustomConstraints self, bool enabledOnly=True) -> OESystem::OEIterBase< OEDocking::OEFeature const >
        GetFeatures(OECustomConstraints self) -> OESystem::OEIterBase< OEDocking::OEFeature const >
        GetFeatures(OECustomConstraints self, bool enabledOnly=True) -> OESystem::OEIterBase< OEDocking::OEFeature >
        GetFeatures(OECustomConstraints self) -> OESystem::OEIterBase< OEDocking::OEFeature > *
        """
        return _oedocking.OECustomConstraints_GetFeatures(self, *args)


    def AddFeature(self) -> "OEDocking::OEFeature *":
        """AddFeature(OECustomConstraints self) -> OEFeature"""
        return _oedocking.OECustomConstraints_AddFeature(self)


    def DeleteFeature(self, arg2: 'OEFeature') -> "bool":
        """DeleteFeature(OECustomConstraints self, OEFeature arg2) -> bool"""
        return _oedocking.OECustomConstraints_DeleteFeature(self, arg2)


    def NumFeatures(self, enabledOnly: 'bool'=True) -> "unsigned int":
        """
        NumFeatures(OECustomConstraints self, bool enabledOnly=True) -> unsigned int
        NumFeatures(OECustomConstraints self) -> unsigned int
        """
        return _oedocking.OECustomConstraints_NumFeatures(self, enabledOnly)


    def Clear(self) -> "bool":
        """Clear(OECustomConstraints self) -> bool"""
        return _oedocking.OECustomConstraints_Clear(self)

    __swig_destroy__ = _oedocking.delete_OECustomConstraints
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEDocking::OECustomConstraints self) -> OECustomConstraints
        __init__(OEDocking::OECustomConstraints self, OECustomConstraints arg2) -> OECustomConstraints
        """
        this = _oedocking.new_OECustomConstraints(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
OECustomConstraints_swigregister = _oedocking.OECustomConstraints_swigregister
OECustomConstraints_swigregister(OECustomConstraints)


def OEIsReceptor(rec: 'OEMolBase') -> "bool":
    """OEIsReceptor(OEMolBase rec) -> bool"""
    return _oedocking.OEIsReceptor(rec)

def OEReceptorHasNegativeImageGrid(rec: 'OEMolBase') -> "bool":
    """OEReceptorHasNegativeImageGrid(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorHasNegativeImageGrid(rec)

def OEReceptorHasInnerContourLevel(rec: 'OEMolBase') -> "bool":
    """OEReceptorHasInnerContourLevel(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorHasInnerContourLevel(rec)

def OEReceptorHasOuterContourLevel(rec: 'OEMolBase') -> "bool":
    """OEReceptorHasOuterContourLevel(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorHasOuterContourLevel(rec)

def OEReceptorHasCustomConstraints(rec: 'OEMolBase', enabledOnly: 'bool'=True) -> "bool":
    """
    OEReceptorHasCustomConstraints(OEMolBase rec, bool enabledOnly=True) -> bool
    OEReceptorHasCustomConstraints(OEMolBase rec) -> bool
    """
    return _oedocking.OEReceptorHasCustomConstraints(rec, enabledOnly)

def OEReceptorHasProteinConstraints(rec: 'OEMolBase', enabledOnly: 'bool'=True) -> "bool":
    """
    OEReceptorHasProteinConstraints(OEMolBase rec, bool enabledOnly=True) -> bool
    OEReceptorHasProteinConstraints(OEMolBase rec) -> bool
    """
    return _oedocking.OEReceptorHasProteinConstraints(rec, enabledOnly)

def OEReceptorHasBoundLigand(rec: 'OEMolBase') -> "bool":
    """OEReceptorHasBoundLigand(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorHasBoundLigand(rec)

def OEReceptorHasExtraMols(rec: 'OEMolBase') -> "bool":
    """OEReceptorHasExtraMols(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorHasExtraMols(rec)

def OEReceptorHasCachedScore(rec: 'OEMolBase') -> "bool":
    """OEReceptorHasCachedScore(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorHasCachedScore(rec)

def OEReceptorGetNegativeImageGrid(rec: 'OEMolBase') -> "OESystem::OEGrid< float >":
    """OEReceptorGetNegativeImageGrid(OEMolBase rec) -> OEFloatGrid"""
    return _oedocking.OEReceptorGetNegativeImageGrid(rec)

def OEReceptorGetInnerContourLevel(rec: 'OEMolBase') -> "float":
    """OEReceptorGetInnerContourLevel(OEMolBase rec) -> float"""
    return _oedocking.OEReceptorGetInnerContourLevel(rec)

def OEReceptorGetOuterContourLevel(rec: 'OEMolBase') -> "float":
    """OEReceptorGetOuterContourLevel(OEMolBase rec) -> float"""
    return _oedocking.OEReceptorGetOuterContourLevel(rec)

def OEReceptorGetCustomConstraints(rec: 'OEMolBase') -> "OEDocking::OECustomConstraints":
    """OEReceptorGetCustomConstraints(OEMolBase rec) -> OECustomConstraints"""
    return _oedocking.OEReceptorGetCustomConstraints(rec)

def OEReceptorGetProteinConstraints(rec: 'OEMolBase', enabledOnly: 'bool'=True) -> "OESystem::OEIterBase< OEDocking::OEProteinConstraint const > *":
    """
    OEReceptorGetProteinConstraints(OEMolBase rec, bool enabledOnly=True) -> OESystem::OEIterBase< OEDocking::OEProteinConstraint const >
    OEReceptorGetProteinConstraints(OEMolBase rec) -> OESystem::OEIterBase< OEDocking::OEProteinConstraint const > *
    """
    return _oedocking.OEReceptorGetProteinConstraints(rec, enabledOnly)

def OEReceptorGetExtraMols(rec: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEMolBase const > *":
    """OEReceptorGetExtraMols(OEMolBase rec) -> OESystem::OEIterBase< OEChem::OEMolBase const > *"""
    return _oedocking.OEReceptorGetExtraMols(rec)

def OEReceptorSetInnerContourLevel(rec: 'OEMolBase', level: 'float') -> "bool":
    """OEReceptorSetInnerContourLevel(OEMolBase rec, float level) -> bool"""
    return _oedocking.OEReceptorSetInnerContourLevel(rec, level)

def OEReceptorSetOuterContourLevel(rec: 'OEMolBase', level: 'float') -> "bool":
    """OEReceptorSetOuterContourLevel(OEMolBase rec, float level) -> bool"""
    return _oedocking.OEReceptorSetOuterContourLevel(rec, level)

def OEReceptorSetCustomConstraints(rec: 'OEMolBase', arg2: 'OECustomConstraints') -> "bool":
    """OEReceptorSetCustomConstraints(OEMolBase rec, OECustomConstraints arg2) -> bool"""
    return _oedocking.OEReceptorSetCustomConstraints(rec, arg2)

def OEReceptorSetProteinConstraint(rec: 'OEMolBase', arg2: 'OEProteinConstraint') -> "bool":
    """OEReceptorSetProteinConstraint(OEMolBase rec, OEProteinConstraint arg2) -> bool"""
    return _oedocking.OEReceptorSetProteinConstraint(rec, arg2)

def OEReceptorSetBoundLigand(rec: 'OEMolBase', boundLig: 'OEMolBase') -> "bool":
    """OEReceptorSetBoundLigand(OEMolBase rec, OEMolBase boundLig) -> bool"""
    return _oedocking.OEReceptorSetBoundLigand(rec, boundLig)

def OEReceptorAddExtraMol(rec: 'OEMolBase', arg2: 'OEMolBase') -> "bool":
    """OEReceptorAddExtraMol(OEMolBase rec, OEMolBase arg2) -> bool"""
    return _oedocking.OEReceptorAddExtraMol(rec, arg2)

def OEReceptorAddCachedScore(*args) -> "bool":
    """
    OEReceptorAddCachedScore(OEMolBase rec, OEScore score) -> bool
    OEReceptorAddCachedScore(OEMolBase rec, OEDock dock) -> bool
    """
    return _oedocking.OEReceptorAddCachedScore(*args)

def OEReceptorSetCachedScore(*args) -> "bool":
    """
    OEReceptorSetCachedScore(OEMolBase rec, OEScore score) -> bool
    OEReceptorSetCachedScore(OEMolBase rec, OEDock dock) -> bool
    """
    return _oedocking.OEReceptorSetCachedScore(*args)

def OEReceptorClear(rec: 'OEMolBase') -> "bool":
    """OEReceptorClear(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorClear(rec)

def OEReceptorClearCustomConstraints(rec: 'OEMolBase') -> "bool":
    """OEReceptorClearCustomConstraints(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorClearCustomConstraints(rec)

def OEReceptorClearProteinConstraint(rec: 'OEMolBase', arg2: 'OEProteinConstraint') -> "bool":
    """OEReceptorClearProteinConstraint(OEMolBase rec, OEProteinConstraint arg2) -> bool"""
    return _oedocking.OEReceptorClearProteinConstraint(rec, arg2)

def OEReceptorClearProteinConstraints(rec: 'OEMolBase') -> "bool":
    """OEReceptorClearProteinConstraints(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorClearProteinConstraints(rec)

def OEReceptorClearBoundLigand(rec: 'OEMolBase') -> "bool":
    """OEReceptorClearBoundLigand(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorClearBoundLigand(rec)

def OEReceptorClearExtraMols(rec: 'OEMolBase') -> "bool":
    """OEReceptorClearExtraMols(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorClearExtraMols(rec)

def OEReceptorClearCachedScore(rec: 'OEMolBase') -> "bool":
    """OEReceptorClearCachedScore(OEMolBase rec) -> bool"""
    return _oedocking.OEReceptorClearCachedScore(rec)

def OEMakeReceptor(*args) -> "bool":
    """
    OEMakeReceptor(OEMolBase receptor, OEDesignUnit designUnit, bool strip_water=True, unsigned int const negImgType) -> bool
    OEMakeReceptor(OEMolBase receptor, OEDesignUnit designUnit, bool strip_water=True) -> bool
    OEMakeReceptor(OEMolBase receptor, OEDesignUnit designUnit) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEBoxBase box, bool strip_water=True, unsigned int const negImgType) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEBoxBase box, bool strip_water=True) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEBoxBase box) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEMolBase lig, bool strip_water=True, unsigned int const negImgType) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEMolBase lig, bool strip_water=True) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEMolBase lig) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEAtomBase hint, bool strip_water=True, unsigned int const negImgType) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEAtomBase hint, bool strip_water=True) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, OEAtomBase hint) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, float hint_x, float hint_y, float hint_z, bool strip_water=True, unsigned int const negImgType) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, float hint_x, float hint_y, float hint_z, bool strip_water=True) -> bool
    OEMakeReceptor(OEMolBase receptor, OEMolBase pro, float hint_x, float hint_y, float hint_z) -> bool
    """
    return _oedocking.OEMakeReceptor(*args)

def OEWriteReceptorFile(receptor: 'OEMolBase', filename: 'std::string') -> "bool":
    """OEWriteReceptorFile(OEMolBase receptor, std::string filename) -> bool"""
    return _oedocking.OEWriteReceptorFile(receptor, filename)

def OEReadReceptorFile(*args) -> "bool":
    """
    OEReadReceptorFile(OEMolBase receptor, std::string filename) -> bool
    OEReadReceptorFile(OEMolBase receptor, oemolistream imstr) -> bool
    """
    return _oedocking.OEReadReceptorFile(*args)

def OEReadReceptorFromString(*args) -> "bool":
    """
    OEReadReceptorFromString(OEMolBase receptor, std::string const & format, std::string const & input) -> bool
    OEReadReceptorFromString(OEMolBase receptor, unsigned int format, unsigned int flavor, bool gzip, std::string const & input) -> bool
    """
    return _oedocking.OEReadReceptorFromString(*args)

def OEWriteReceptorToString(*args) -> "std::string":
    """
    OEWriteReceptorToString(std::string const & format, OEMolBase receptor) -> std::string
    OEWriteReceptorToString(unsigned int format, unsigned int flavor, bool gzip, OEMolBase receptor) -> std::string
    """
    return _oedocking.OEWriteReceptorToString(*args)

def GetFileFormat(format: 'char const *') -> "unsigned int":
    """GetFileFormat(char const * format) -> unsigned int"""
    return _oedocking.GetFileFormat(format)

def OEReceptorFromBytes(*args) -> "PyObject *":
    """
    OEReceptorFromBytes(OEMolBase & mol, char const * format, PyObject * bytes) -> PyObject
    OEReceptorFromBytes(OEMolBase & mol, unsigned int format, unsigned int flavor, bool gzip, PyObject * bytes) -> PyObject *
    """
    return _oedocking.OEReceptorFromBytes(*args)

def OEReceptorToBytes(*args) -> "PyObject *":
    """
    OEReceptorToBytes(char const * format, OEMolBase & mol) -> PyObject
    OEReceptorToBytes(unsigned int format, unsigned int flavor, bool gzip, OEMolBase & mol) -> PyObject *
    """
    return _oedocking.OEReceptorToBytes(*args)
class OEBoxBase(object):
    """Proxy of C++ OEDocking::OEBoxBase 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 GetXMax(self) -> "float":
        """GetXMax(OEBoxBase self) -> float"""
        return _oedocking.OEBoxBase_GetXMax(self)


    def GetYMax(self) -> "float":
        """GetYMax(OEBoxBase self) -> float"""
        return _oedocking.OEBoxBase_GetYMax(self)


    def GetZMax(self) -> "float":
        """GetZMax(OEBoxBase self) -> float"""
        return _oedocking.OEBoxBase_GetZMax(self)


    def GetXMin(self) -> "float":
        """GetXMin(OEBoxBase self) -> float"""
        return _oedocking.OEBoxBase_GetXMin(self)


    def GetYMin(self) -> "float":
        """GetYMin(OEBoxBase self) -> float"""
        return _oedocking.OEBoxBase_GetYMin(self)


    def GetZMin(self) -> "float":
        """GetZMin(OEBoxBase self) -> float"""
        return _oedocking.OEBoxBase_GetZMin(self)


    def Setup(self, x1: 'float', y1: 'float', z1: 'float', x2: 'float', y2: 'float', z2: 'float') -> "bool":
        """Setup(OEBoxBase self, float x1, float y1, float z1, float x2, float y2, float z2) -> bool"""
        return _oedocking.OEBoxBase_Setup(self, x1, y1, z1, x2, y2, z2)

    __swig_destroy__ = _oedocking.delete_OEBoxBase
    __del__ = lambda self: None
OEBoxBase_swigregister = _oedocking.OEBoxBase_swigregister
OEBoxBase_swigregister(OEBoxBase)

class OESphereBase(object):
    """Proxy of C++ OEDocking::OESphereBase 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 GetX(self) -> "float":
        """GetX(OESphereBase self) -> float"""
        return _oedocking.OESphereBase_GetX(self)


    def GetY(self) -> "float":
        """GetY(OESphereBase self) -> float"""
        return _oedocking.OESphereBase_GetY(self)


    def GetZ(self) -> "float":
        """GetZ(OESphereBase self) -> float"""
        return _oedocking.OESphereBase_GetZ(self)


    def GetRad(self) -> "float":
        """GetRad(OESphereBase self) -> float"""
        return _oedocking.OESphereBase_GetRad(self)


    def SetRad(self, rad: 'float') -> "bool":
        """SetRad(OESphereBase self, float rad) -> bool"""
        return _oedocking.OESphereBase_SetRad(self, rad)


    def SetCenter(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetCenter(OESphereBase self, float x, float y, float z) -> bool"""
        return _oedocking.OESphereBase_SetCenter(self, x, y, z)

    __swig_destroy__ = _oedocking.delete_OESphereBase
    __del__ = lambda self: None
OESphereBase_swigregister = _oedocking.OESphereBase_swigregister
OESphereBase_swigregister(OESphereBase)

class OEBox(OEBoxBase):
    """Proxy of C++ OEDocking::OEBox class."""

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

    def GetXMax(self) -> "float":
        """GetXMax(OEBox self) -> float"""
        return _oedocking.OEBox_GetXMax(self)


    def GetYMax(self) -> "float":
        """GetYMax(OEBox self) -> float"""
        return _oedocking.OEBox_GetYMax(self)


    def GetZMax(self) -> "float":
        """GetZMax(OEBox self) -> float"""
        return _oedocking.OEBox_GetZMax(self)


    def GetXMin(self) -> "float":
        """GetXMin(OEBox self) -> float"""
        return _oedocking.OEBox_GetXMin(self)


    def GetYMin(self) -> "float":
        """GetYMin(OEBox self) -> float"""
        return _oedocking.OEBox_GetYMin(self)


    def GetZMin(self) -> "float":
        """GetZMin(OEBox self) -> float"""
        return _oedocking.OEBox_GetZMin(self)


    def Setup(self, x1: 'float', y1: 'float', z1: 'float', x2: 'float', y2: 'float', z2: 'float') -> "bool":
        """Setup(OEBox self, float x1, float y1, float z1, float x2, float y2, float z2) -> bool"""
        return _oedocking.OEBox_Setup(self, x1, y1, z1, x2, y2, z2)


    def __init__(self, *args):
        """
        __init__(OEDocking::OEBox self) -> OEBox
        __init__(OEDocking::OEBox self, float x1, float y1, float z1, float x2, float y2, float z2) -> OEBox
        __init__(OEDocking::OEBox self, OEBoxBase box) -> OEBox
        __init__(OEDocking::OEBox self, OEMolBase mol, float addbox=0.0) -> OEBox
        __init__(OEDocking::OEBox self, OEMolBase mol) -> OEBox
        __init__(OEDocking::OEBox self, OEMCMolBase mol, float addbox=0.0) -> OEBox
        __init__(OEDocking::OEBox self, OEMCMolBase mol) -> OEBox
        """
        this = _oedocking.new_OEBox(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEBox
    __del__ = lambda self: None
OEBox_swigregister = _oedocking.OEBox_swigregister
OEBox_swigregister(OEBox)


def OEBoxExtend(*args) -> "bool":
    """
    OEBoxExtend(OEBoxBase box, float x_ext, float y_ext, float z_ext) -> bool
    OEBoxExtend(OEBoxBase box, float ext) -> bool
    """
    return _oedocking.OEBoxExtend(*args)

def OEBoxTranslate(box: 'OEBoxBase', x_trans: 'float', y_trans: 'float', z_trans: 'float') -> "bool":
    """OEBoxTranslate(OEBoxBase box, float x_trans, float y_trans, float z_trans) -> bool"""
    return _oedocking.OEBoxTranslate(box, x_trans, y_trans, z_trans)

def OEBoxVolume(box: 'OEBoxBase') -> "float":
    """OEBoxVolume(OEBoxBase box) -> float"""
    return _oedocking.OEBoxVolume(box)

def OEBoxArea(box: 'OEBoxBase') -> "float":
    """OEBoxArea(OEBoxBase box) -> float"""
    return _oedocking.OEBoxArea(box)

def OEInBox(box: 'OEBoxBase', x: 'float', y: 'float', z: 'float') -> "bool":
    """OEInBox(OEBoxBase box, float x, float y, float z) -> bool"""
    return _oedocking.OEInBox(box, x, y, z)

def OEBoxXMid(box: 'OEBoxBase') -> "float":
    """OEBoxXMid(OEBoxBase box) -> float"""
    return _oedocking.OEBoxXMid(box)

def OEBoxYMid(box: 'OEBoxBase') -> "float":
    """OEBoxYMid(OEBoxBase box) -> float"""
    return _oedocking.OEBoxYMid(box)

def OEBoxZMid(box: 'OEBoxBase') -> "float":
    """OEBoxZMid(OEBoxBase box) -> float"""
    return _oedocking.OEBoxZMid(box)

def OEBoxXDim(box: 'OEBoxBase') -> "float":
    """OEBoxXDim(OEBoxBase box) -> float"""
    return _oedocking.OEBoxXDim(box)

def OEBoxYDim(box: 'OEBoxBase') -> "float":
    """OEBoxYDim(OEBoxBase box) -> float"""
    return _oedocking.OEBoxYDim(box)

def OEBoxZDim(box: 'OEBoxBase') -> "float":
    """OEBoxZDim(OEBoxBase box) -> float"""
    return _oedocking.OEBoxZDim(box)

def OESetupBox(*args) -> "bool":
    """
    OESetupBox(OEBoxBase arg1, float * xyz, unsigned int N, bool addbox=False) -> bool
    OESetupBox(OEBoxBase arg1, float * xyz, unsigned int N) -> bool
    OESetupBox(OEBoxBase arg1, OEMolBase arg2, float addbox=0.0) -> bool
    OESetupBox(OEBoxBase arg1, OEMolBase arg2) -> bool
    OESetupBox(OEBoxBase arg1, OEMCMolBase arg2, float addbox=0.0) -> bool
    OESetupBox(OEBoxBase arg1, OEMCMolBase arg2) -> bool
    """
    return _oedocking.OESetupBox(*args)

def OESetupBoxCenterAndExtents(arg1: 'OEBoxBase', center: 'float *', extents: 'float *') -> "bool":
    """OESetupBoxCenterAndExtents(OEBoxBase arg1, float * center, float * extents) -> bool"""
    return _oedocking.OESetupBoxCenterAndExtents(arg1, center, extents)

def OEMakeBoxMolecule(mol: 'OEMolBase', box: 'OEBoxBase') -> "bool":
    """OEMakeBoxMolecule(OEMolBase mol, OEBoxBase box) -> bool"""
    return _oedocking.OEMakeBoxMolecule(mol, box)

def OEGetSmallestEnclosingBoxRotation(euler: 'float *', xyz: 'float const *', N: 'unsigned int', Nsteps: 'unsigned int'=10) -> "bool":
    """
    OEGetSmallestEnclosingBoxRotation(float * euler, float const * xyz, unsigned int N, unsigned int Nsteps=10) -> bool
    OEGetSmallestEnclosingBoxRotation(float * euler, float const * xyz, unsigned int N) -> bool
    """
    return _oedocking.OEGetSmallestEnclosingBoxRotation(euler, xyz, N, Nsteps)

def OESphereVolume(sph: 'OESphereBase') -> "float":
    """OESphereVolume(OESphereBase sph) -> float"""
    return _oedocking.OESphereVolume(sph)

def OESphereArea(sph: 'OESphereBase') -> "float":
    """OESphereArea(OESphereBase sph) -> float"""
    return _oedocking.OESphereArea(sph)

def OEInSphere(sph: 'OESphereBase', x: 'float', y: 'float', z: 'float') -> "bool":
    """OEInSphere(OESphereBase sph, float x, float y, float z) -> bool"""
    return _oedocking.OEInSphere(sph, x, y, z)
class OEProteinConstraint(object):
    """Proxy of C++ OEDocking::OEProteinConstraint class."""

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

    def GetAtom(self) -> "OEChem::OEAtomBase *":
        """GetAtom(OEProteinConstraint self) -> OEAtomBase"""
        return _oedocking.OEProteinConstraint_GetAtom(self)


    def GetType(self) -> "unsigned int":
        """GetType(OEProteinConstraint self) -> unsigned int"""
        return _oedocking.OEProteinConstraint_GetType(self)


    def GetEnabled(self) -> "bool":
        """GetEnabled(OEProteinConstraint self) -> bool"""
        return _oedocking.OEProteinConstraint_GetEnabled(self)


    def GetName(self) -> "std::string":
        """GetName(OEProteinConstraint self) -> std::string"""
        return _oedocking.OEProteinConstraint_GetName(self)


    def SetAtom(self, atom: 'OEAtomBase') -> "void":
        """SetAtom(OEProteinConstraint self, OEAtomBase atom)"""
        return _oedocking.OEProteinConstraint_SetAtom(self, atom)


    def SetType(self, type: 'unsigned int') -> "void":
        """SetType(OEProteinConstraint self, unsigned int type)"""
        return _oedocking.OEProteinConstraint_SetType(self, type)


    def SetEnabled(self, enabled: 'bool') -> "void":
        """SetEnabled(OEProteinConstraint self, bool enabled)"""
        return _oedocking.OEProteinConstraint_SetEnabled(self, enabled)


    def SetName(self, name: 'std::string') -> "void":
        """SetName(OEProteinConstraint self, std::string name)"""
        return _oedocking.OEProteinConstraint_SetName(self, name)


    def __init__(self):
        """__init__(OEDocking::OEProteinConstraint self) -> OEProteinConstraint"""
        this = _oedocking.new_OEProteinConstraint()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEProteinConstraint
    __del__ = lambda self: None
OEProteinConstraint_swigregister = _oedocking.OEProteinConstraint_swigregister
OEProteinConstraint_swigregister(OEProteinConstraint)

class OEScore(object):
    """Proxy of C++ OEDocking::OEScore 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__(OEDocking::OEScore self, unsigned int const scoring) -> OEScore
        __init__(OEDocking::OEScore self) -> OEScore
        __init__(OEDocking::OEScore self, OEScore arg2) -> OEScore
        """
        this = _oedocking.new_OEScore(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEScore
    __del__ = lambda self: None

    def IsInitialized(self) -> "bool":
        """IsInitialized(OEScore self) -> bool"""
        return _oedocking.OEScore_IsInitialized(self)


    def Initialize(self, *args) -> "bool":
        """
        Initialize(OEScore self, OEMolBase pro, OEBoxBase box) -> bool
        Initialize(OEScore self, OEMolBase receptor) -> bool
        """
        return _oedocking.OEScore_Initialize(self, *args)


    def GetName(self) -> "std::string":
        """GetName(OEScore self) -> std::string"""
        return _oedocking.OEScore_GetName(self)


    def GetComponentNames(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetComponentNames(OEScore self) -> OESystem::OEIterBase< std::string const > *"""
        return _oedocking.OEScore_GetComponentNames(self)


    def GetHighScoresAreBetter(self) -> "bool":
        """GetHighScoresAreBetter(OEScore self) -> bool"""
        return _oedocking.OEScore_GetHighScoresAreBetter(self)


    def ScoreLigand(self, lig: 'OEMolBase') -> "float":
        """ScoreLigand(OEScore self, OEMolBase lig) -> float"""
        return _oedocking.OEScore_ScoreLigand(self, lig)


    def ScoreAtom(self, atom: 'OEAtomBase', lig: 'OEMolBase') -> "float":
        """ScoreAtom(OEScore self, OEAtomBase atom, OEMolBase lig) -> float"""
        return _oedocking.OEScore_ScoreAtom(self, atom, lig)


    def ScoreLigandComponent(self, lig: 'OEMolBase', compName: 'std::string') -> "float":
        """ScoreLigandComponent(OEScore self, OEMolBase lig, std::string compName) -> float"""
        return _oedocking.OEScore_ScoreLigandComponent(self, lig, compName)


    def ScoreAtomComponent(self, atom: 'OEAtomBase', lig: 'OEMolBase', compName: 'std::string') -> "float":
        """ScoreAtomComponent(OEScore self, OEAtomBase atom, OEMolBase lig, std::string compName) -> float"""
        return _oedocking.OEScore_ScoreAtomComponent(self, atom, lig, compName)


    def SystematicSolidBodyOptimize(self, *args) -> "bool":
        """
        SystematicSolidBodyOptimize(OEScore self, OEMCMolBase mol, unsigned int searchRes) -> bool
        SystematicSolidBodyOptimize(OEScore self, OEMCMolBase mol) -> bool
        SystematicSolidBodyOptimize(OEScore self, OEMolBase mol, unsigned int searchRes) -> bool
        SystematicSolidBodyOptimize(OEScore self, OEMolBase mol) -> bool
        """
        return _oedocking.OEScore_SystematicSolidBodyOptimize(self, *args)


    def AnnotatePose(self, *args) -> "bool":
        """
        AnnotatePose(OEScore self, OEMolBase lig) -> bool
        AnnotatePose(OEScore self, OEMCMolBase lig) -> bool
        """
        return _oedocking.OEScore_AnnotatePose(self, *args)


    def CacheScoringSetup(self, receptor: 'OEMolBase', clearOldData: 'bool'=True) -> "bool":
        """
        CacheScoringSetup(OEScore self, OEMolBase receptor, bool clearOldData=True) -> bool
        CacheScoringSetup(OEScore self, OEMolBase receptor) -> bool
        """
        return _oedocking.OEScore_CacheScoringSetup(self, receptor, clearOldData)

OEScore_swigregister = _oedocking.OEScore_swigregister
OEScore_swigregister(OEScore)


def OESetEnergyScore(*args) -> "bool":
    """
    OESetEnergyScore(OEMCMolBase ligand, OEDock scoreFxn, bool sortPoses=False) -> bool
    OESetEnergyScore(OEMCMolBase ligand, OEDock scoreFxn) -> bool
    OESetEnergyScore(OEMolBase ligand, OEDock scoreFxn) -> bool
    OESetEnergyScore(OEMCMolBase ligand, OEScore scoreFxn, bool sortPoses=False) -> bool
    OESetEnergyScore(OEMCMolBase ligand, OEScore scoreFxn) -> bool
    OESetEnergyScore(OEMolBase ligand, OEScore scoreFxn) -> bool
    """
    return _oedocking.OESetEnergyScore(*args)

def OESetScore(*args) -> "bool":
    """
    OESetScore(OEMCMolBase ligand, OEDock scoreFxn, std::string tag, bool sortPoses=False) -> bool
    OESetScore(OEMCMolBase ligand, OEDock scoreFxn, std::string tag) -> bool
    OESetScore(OEMolBase arg1, OEDock scoreFxn, std::string tag) -> bool
    OESetScore(OEMCMolBase ligand, OEScore scoreFxn, std::string tag, bool sortPoses=False) -> bool
    OESetScore(OEMCMolBase ligand, OEScore scoreFxn, std::string tag) -> bool
    OESetScore(OEMolBase arg1, OEScore scoreFxn, std::string tag) -> bool
    """
    return _oedocking.OESetScore(*args)

def OESetEnergyScoreComponent(*args) -> "bool":
    """
    OESetEnergyScoreComponent(OEMCMolBase ligand, OEDock scoreFxn, std::string component, bool sortPoses=False) -> bool
    OESetEnergyScoreComponent(OEMCMolBase ligand, OEDock scoreFxn, std::string component) -> bool
    OESetEnergyScoreComponent(OEMolBase ligand, OEDock scoreFxn, std::string component) -> bool
    OESetEnergyScoreComponent(OEMCMolBase ligand, OEScore scoreFxn, std::string component, bool sortPoses=False) -> bool
    OESetEnergyScoreComponent(OEMCMolBase ligand, OEScore scoreFxn, std::string component) -> bool
    OESetEnergyScoreComponent(OEMolBase ligand, OEScore scoreFxn, std::string component) -> bool
    """
    return _oedocking.OESetEnergyScoreComponent(*args)

def OESetSDScoreComponent(*args) -> "bool":
    """
    OESetSDScoreComponent(OEMCMolBase ligand, OEDock scoreFxn, std::string component, std::string tag, bool sortPoses=False) -> bool
    OESetSDScoreComponent(OEMCMolBase ligand, OEDock scoreFxn, std::string component, std::string tag) -> bool
    OESetSDScoreComponent(OEMolBase ligand, OEDock scoreFxn, std::string component, std::string tag) -> bool
    OESetSDScoreComponent(OEMCMolBase ligand, OEScore scoreFxn, std::string component, std::string tag, bool sortPoses=False) -> bool
    OESetSDScoreComponent(OEMCMolBase ligand, OEScore scoreFxn, std::string component, std::string tag) -> bool
    OESetSDScoreComponent(OEMolBase ligand, OEScore scoreFxn, std::string component, std::string tag) -> bool
    """
    return _oedocking.OESetSDScoreComponent(*args)

def OESetScoreComponent(*args) -> "bool":
    """
    OESetScoreComponent(OEMCMolBase ligand, OEDock scoreFxn, std::string component, std::string tag, bool sortPoses=False) -> bool
    OESetScoreComponent(OEMCMolBase ligand, OEDock scoreFxn, std::string component, std::string tag) -> bool
    OESetScoreComponent(OEMolBase ligand, OEDock scoreFxn, std::string component, std::string tag) -> bool
    OESetScoreComponent(OEMCMolBase ligand, OEScore scoreFxn, std::string component, std::string tag, bool sortPoses=False) -> bool
    OESetScoreComponent(OEMCMolBase ligand, OEScore scoreFxn, std::string component, std::string tag) -> bool
    OESetScoreComponent(OEMolBase ligand, OEScore scoreFxn, std::string component, std::string tag) -> bool
    """
    return _oedocking.OESetScoreComponent(*args)
OE_OEDOCKING_VERSION = _oedocking.OE_OEDOCKING_VERSION

def OEDockingGetRelease() -> "char const *":
    """OEDockingGetRelease() -> char const *"""
    return _oedocking.OEDockingGetRelease()

def OEDockingGetVersion() -> "unsigned int":
    """OEDockingGetVersion() -> unsigned int"""
    return _oedocking.OEDockingGetVersion()

def OEDockingGetArch() -> "char const *":
    """OEDockingGetArch() -> char const *"""
    return _oedocking.OEDockingGetArch()

def OEDockingGetPlatform() -> "char const *":
    """OEDockingGetPlatform() -> char const *"""
    return _oedocking.OEDockingGetPlatform()

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

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

def OEDockingGetSite(*args) -> "std::string":
    """
    OEDockingGetSite(std::string & site) -> bool
    OEDockingGetSite() -> std::string
    """
    return _oedocking.OEDockingGetSite(*args)
class OEConstProteinConstraintIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEDocking::OEProteinConstraint)> 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<(q(const).OEDocking::OEProteinConstraint)> self) -> OEConstProteinConstraintIter
        __init__(OESystem::OEIter<(q(const).OEDocking::OEProteinConstraint)> self, OEConstProteinConstraintIter rhs) -> OEConstProteinConstraintIter
        __init__(OESystem::OEIter<(q(const).OEDocking::OEProteinConstraint)> self, OESystem::OEIterBase< OEDocking::OEProteinConstraint const > * rhs) -> OEConstProteinConstraintIter
        __init__(OESystem::OEIter<(q(const).OEDocking::OEProteinConstraint)> self, OESystem::OEIterBase< OESystem::OEIter< OEDocking::OEProteinConstraint const >::NonConstA > * rhs) -> OEConstProteinConstraintIter
        """
        this = _oedocking.new_OEConstProteinConstraintIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEConstProteinConstraintIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEDocking::OEProteinConstraint const > *":
        """Copy(OEConstProteinConstraintIter self) -> OESystem::OEIterBase< OEDocking::OEProteinConstraint const > *"""
        return _oedocking.OEConstProteinConstraintIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConstProteinConstraintIter self, OESystem::OEIterBase< OEDocking::OEProteinConstraint const > * ib)
        Push(OEConstProteinConstraintIter self, OEConstProteinConstraintIter iter)
        """
        return _oedocking.OEConstProteinConstraintIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEDocking::OEProteinConstraint const,OEDocking::OEProteinConstraint const > const &') -> "void":
        """Sort(OEConstProteinConstraintIter self, OESystem::OEBinaryPredicate< OEDocking::OEProteinConstraint const,OEDocking::OEProteinConstraint const > const & sort_criterion)"""
        return _oedocking.OEConstProteinConstraintIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEDocking::OEProteinConstraint const > &":
        """ToFirst(OEConstProteinConstraintIter self) -> OEConstProteinConstraintIter"""
        return _oedocking.OEConstProteinConstraintIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEDocking::OEProteinConstraint const > &":
        """ToLast(OEConstProteinConstraintIter self) -> OEConstProteinConstraintIter"""
        return _oedocking.OEConstProteinConstraintIter_ToLast(self)


    def __ref__(self) -> "OEDocking::OEProteinConstraint const &":
        """__ref__(OEConstProteinConstraintIter self) -> OEProteinConstraint"""
        return _oedocking.OEConstProteinConstraintIter___ref__(self)


    def IsValid(self):
      return _oedocking.OEConstProteinConstraintIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConstProteinConstraintIter self) -> PyObject *"""
        return _oedocking.OEConstProteinConstraintIter_next(self)


    def Target(self) -> "OEDocking::OEProteinConstraint const &":
        """Target(OEConstProteinConstraintIter self) -> OEProteinConstraint"""
        return _oedocking.OEConstProteinConstraintIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEDocking::OEProteinConstraint const > &":
        """
        Next(OEConstProteinConstraintIter self) -> OEConstProteinConstraintIter
        Next(OEConstProteinConstraintIter self, int i) -> OEConstProteinConstraintIter
        """
        return _oedocking.OEConstProteinConstraintIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEDocking::OEProteinConstraint const > &":
        """
        Prev(OEConstProteinConstraintIter self) -> OEConstProteinConstraintIter
        Prev(OEConstProteinConstraintIter self, int i) -> OEConstProteinConstraintIter
        """
        return _oedocking.OEConstProteinConstraintIter_Prev(self, *args)

OEConstProteinConstraintIter_swigregister = _oedocking.OEConstProteinConstraintIter_swigregister
OEConstProteinConstraintIter_swigregister(OEConstProteinConstraintIter)

class OEConstMolBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEChem::OEMolBase)> 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<(q(const).OEChem::OEMolBase)> self) -> OEConstMolBaseIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEMolBase)> self, OEConstMolBaseIter rhs) -> OEConstMolBaseIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEMolBase)> self, OESystem::OEIterBase< OEChem::OEMolBase const > * rhs) -> OEConstMolBaseIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEMolBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMolBase const >::NonConstA > * rhs) -> OEConstMolBaseIter
        """
        this = _oedocking.new_OEConstMolBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEConstMolBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMolBase const > *":
        """Copy(OEConstMolBaseIter self) -> OESystem::OEIterBase< OEChem::OEMolBase const > *"""
        return _oedocking.OEConstMolBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConstMolBaseIter self, OESystem::OEIterBase< OEChem::OEMolBase const > * ib)
        Push(OEConstMolBaseIter self, OEConstMolBaseIter iter)
        """
        return _oedocking.OEConstMolBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMolBase const,OEChem::OEMolBase const > const &') -> "void":
        """Sort(OEConstMolBaseIter self, OESystem::OEBinaryPredicate< OEChem::OEMolBase const,OEChem::OEMolBase const > const & sort_criterion)"""
        return _oedocking.OEConstMolBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMolBase const > &":
        """ToFirst(OEConstMolBaseIter self) -> OEConstMolBaseIter"""
        return _oedocking.OEConstMolBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMolBase const > &":
        """ToLast(OEConstMolBaseIter self) -> OEConstMolBaseIter"""
        return _oedocking.OEConstMolBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMolBase const &":
        """__ref__(OEConstMolBaseIter self) -> OEMolBase"""
        return _oedocking.OEConstMolBaseIter___ref__(self)


    def IsValid(self):
      return _oedocking.OEConstMolBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConstMolBaseIter self) -> PyObject *"""
        return _oedocking.OEConstMolBaseIter_next(self)


    def Target(self) -> "OEChem::OEMolBase const &":
        """Target(OEConstMolBaseIter self) -> OEMolBase"""
        return _oedocking.OEConstMolBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMolBase const > &":
        """
        Next(OEConstMolBaseIter self) -> OEConstMolBaseIter
        Next(OEConstMolBaseIter self, int i) -> OEConstMolBaseIter
        """
        return _oedocking.OEConstMolBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMolBase const > &":
        """
        Prev(OEConstMolBaseIter self) -> OEConstMolBaseIter
        Prev(OEConstMolBaseIter self, int i) -> OEConstMolBaseIter
        """
        return _oedocking.OEConstMolBaseIter_Prev(self, *args)

OEConstMolBaseIter_swigregister = _oedocking.OEConstMolBaseIter_swigregister
OEConstMolBaseIter_swigregister(OEConstMolBaseIter)

class OEFeatureIter(object):
    """Proxy of C++ OESystem::OEIter<(OEDocking::OEFeature)> 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<(OEDocking::OEFeature)> self) -> OEFeatureIter
        __init__(OESystem::OEIter<(OEDocking::OEFeature)> self, OEFeatureIter rhs) -> OEFeatureIter
        __init__(OESystem::OEIter<(OEDocking::OEFeature)> self, OESystem::OEIterBase< OEDocking::OEFeature > * rhs) -> OEFeatureIter
        __init__(OESystem::OEIter<(OEDocking::OEFeature)> self, OESystem::OEIterBase< OESystem::OEIter< OEDocking::OEFeature >::NonConstA > * rhs) -> OEFeatureIter
        """
        this = _oedocking.new_OEFeatureIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEFeatureIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEDocking::OEFeature > *":
        """Copy(OEFeatureIter self) -> OESystem::OEIterBase< OEDocking::OEFeature > *"""
        return _oedocking.OEFeatureIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEFeatureIter self, OESystem::OEIterBase< OEDocking::OEFeature > * ib)
        Push(OEFeatureIter self, OEFeatureIter iter)
        """
        return _oedocking.OEFeatureIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEDocking::OEFeature,OEDocking::OEFeature > const &') -> "void":
        """Sort(OEFeatureIter self, OESystem::OEBinaryPredicate< OEDocking::OEFeature,OEDocking::OEFeature > const & sort_criterion)"""
        return _oedocking.OEFeatureIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEDocking::OEFeature > &":
        """ToFirst(OEFeatureIter self) -> OEFeatureIter"""
        return _oedocking.OEFeatureIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEDocking::OEFeature > &":
        """ToLast(OEFeatureIter self) -> OEFeatureIter"""
        return _oedocking.OEFeatureIter_ToLast(self)


    def __ref__(self) -> "OEDocking::OEFeature &":
        """__ref__(OEFeatureIter self) -> OEFeature"""
        return _oedocking.OEFeatureIter___ref__(self)


    def IsValid(self):
      return _oedocking.OEFeatureIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEFeatureIter self) -> PyObject *"""
        return _oedocking.OEFeatureIter_next(self)


    def Target(self) -> "OEDocking::OEFeature &":
        """Target(OEFeatureIter self) -> OEFeature"""
        return _oedocking.OEFeatureIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEDocking::OEFeature > &":
        """
        Next(OEFeatureIter self) -> OEFeatureIter
        Next(OEFeatureIter self, int i) -> OEFeatureIter
        """
        return _oedocking.OEFeatureIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEDocking::OEFeature > &":
        """
        Prev(OEFeatureIter self) -> OEFeatureIter
        Prev(OEFeatureIter self, int i) -> OEFeatureIter
        """
        return _oedocking.OEFeatureIter_Prev(self, *args)

OEFeatureIter_swigregister = _oedocking.OEFeatureIter_swigregister
OEFeatureIter_swigregister(OEFeatureIter)

class OESphereBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEDocking::OESphereBase)> 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<(OEDocking::OESphereBase)> self) -> OESphereBaseIter
        __init__(OESystem::OEIter<(OEDocking::OESphereBase)> self, OESphereBaseIter rhs) -> OESphereBaseIter
        __init__(OESystem::OEIter<(OEDocking::OESphereBase)> self, OESystem::OEIterBase< OEDocking::OESphereBase > * rhs) -> OESphereBaseIter
        __init__(OESystem::OEIter<(OEDocking::OESphereBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEDocking::OESphereBase >::NonConstA > * rhs) -> OESphereBaseIter
        """
        this = _oedocking.new_OESphereBaseIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OESphereBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEDocking::OESphereBase > *":
        """Copy(OESphereBaseIter self) -> OESystem::OEIterBase< OEDocking::OESphereBase > *"""
        return _oedocking.OESphereBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESphereBaseIter self, OESystem::OEIterBase< OEDocking::OESphereBase > * ib)
        Push(OESphereBaseIter self, OESphereBaseIter iter)
        """
        return _oedocking.OESphereBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEDocking::OESphereBase,OEDocking::OESphereBase > const &') -> "void":
        """Sort(OESphereBaseIter self, OESystem::OEBinaryPredicate< OEDocking::OESphereBase,OEDocking::OESphereBase > const & sort_criterion)"""
        return _oedocking.OESphereBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEDocking::OESphereBase > &":
        """ToFirst(OESphereBaseIter self) -> OESphereBaseIter"""
        return _oedocking.OESphereBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEDocking::OESphereBase > &":
        """ToLast(OESphereBaseIter self) -> OESphereBaseIter"""
        return _oedocking.OESphereBaseIter_ToLast(self)


    def __ref__(self) -> "OEDocking::OESphereBase &":
        """__ref__(OESphereBaseIter self) -> OESphereBase"""
        return _oedocking.OESphereBaseIter___ref__(self)


    def IsValid(self):
      return _oedocking.OESphereBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESphereBaseIter self) -> PyObject *"""
        return _oedocking.OESphereBaseIter_next(self)


    def Target(self) -> "OEDocking::OESphereBase &":
        """Target(OESphereBaseIter self) -> OESphereBase"""
        return _oedocking.OESphereBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEDocking::OESphereBase > &":
        """
        Next(OESphereBaseIter self) -> OESphereBaseIter
        Next(OESphereBaseIter self, int i) -> OESphereBaseIter
        """
        return _oedocking.OESphereBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEDocking::OESphereBase > &":
        """
        Prev(OESphereBaseIter self) -> OESphereBaseIter
        Prev(OESphereBaseIter self, int i) -> OESphereBaseIter
        """
        return _oedocking.OESphereBaseIter_Prev(self, *args)

OESphereBaseIter_swigregister = _oedocking.OESphereBaseIter_swigregister
OESphereBaseIter_swigregister(OESphereBaseIter)

class OESinglePoseResultIter(object):
    """Proxy of C++ OESystem::OEIter<(OEDocking::OESinglePoseResult)> 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<(OEDocking::OESinglePoseResult)> self) -> OESinglePoseResultIter
        __init__(OESystem::OEIter<(OEDocking::OESinglePoseResult)> self, OESinglePoseResultIter rhs) -> OESinglePoseResultIter
        __init__(OESystem::OEIter<(OEDocking::OESinglePoseResult)> self, OESystem::OEIterBase< OEDocking::OESinglePoseResult > * rhs) -> OESinglePoseResultIter
        __init__(OESystem::OEIter<(OEDocking::OESinglePoseResult)> self, OESystem::OEIterBase< OESystem::OEIter< OEDocking::OESinglePoseResult >::NonConstA > * rhs) -> OESinglePoseResultIter
        """
        this = _oedocking.new_OESinglePoseResultIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OESinglePoseResultIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEDocking::OESinglePoseResult > *":
        """Copy(OESinglePoseResultIter self) -> OESystem::OEIterBase< OEDocking::OESinglePoseResult > *"""
        return _oedocking.OESinglePoseResultIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESinglePoseResultIter self, OESystem::OEIterBase< OEDocking::OESinglePoseResult > * ib)
        Push(OESinglePoseResultIter self, OESinglePoseResultIter iter)
        """
        return _oedocking.OESinglePoseResultIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEDocking::OESinglePoseResult,OEDocking::OESinglePoseResult > const &') -> "void":
        """Sort(OESinglePoseResultIter self, OESystem::OEBinaryPredicate< OEDocking::OESinglePoseResult,OEDocking::OESinglePoseResult > const & sort_criterion)"""
        return _oedocking.OESinglePoseResultIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEDocking::OESinglePoseResult > &":
        """ToFirst(OESinglePoseResultIter self) -> OESinglePoseResultIter"""
        return _oedocking.OESinglePoseResultIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEDocking::OESinglePoseResult > &":
        """ToLast(OESinglePoseResultIter self) -> OESinglePoseResultIter"""
        return _oedocking.OESinglePoseResultIter_ToLast(self)


    def __ref__(self) -> "OEDocking::OESinglePoseResult &":
        """__ref__(OESinglePoseResultIter self) -> OESinglePoseResult"""
        return _oedocking.OESinglePoseResultIter___ref__(self)


    def IsValid(self):
      return _oedocking.OESinglePoseResultIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESinglePoseResultIter self) -> PyObject *"""
        return _oedocking.OESinglePoseResultIter_next(self)


    def Target(self) -> "OEDocking::OESinglePoseResult &":
        """Target(OESinglePoseResultIter self) -> OESinglePoseResult"""
        return _oedocking.OESinglePoseResultIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEDocking::OESinglePoseResult > &":
        """
        Next(OESinglePoseResultIter self) -> OESinglePoseResultIter
        Next(OESinglePoseResultIter self, int i) -> OESinglePoseResultIter
        """
        return _oedocking.OESinglePoseResultIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEDocking::OESinglePoseResult > &":
        """
        Prev(OESinglePoseResultIter self) -> OESinglePoseResultIter
        Prev(OESinglePoseResultIter self, int i) -> OESinglePoseResultIter
        """
        return _oedocking.OESinglePoseResultIter_Prev(self, *args)

OESinglePoseResultIter_swigregister = _oedocking.OESinglePoseResultIter_swigregister
OESinglePoseResultIter_swigregister(OESinglePoseResultIter)

class OEReceptorIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMolBase)> 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<(OEChem::OEMolBase)> self) -> OEReceptorIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OEMolBaseIter rhs) -> OEReceptorIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OESystem::OEIterBase< OEChem::OEMolBase > * rhs) -> OEReceptorIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMolBase >::NonConstA > * rhs) -> OEReceptorIter
        """
        this = _oedocking.new_OEReceptorIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEReceptorIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """Copy(OEReceptorIter self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oedocking.OEReceptorIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEReceptorIter self, OESystem::OEIterBase< OEChem::OEMolBase > * ib)
        Push(OEReceptorIter self, OEMolBaseIter iter)
        """
        return _oedocking.OEReceptorIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryMolBasePred') -> "void":
        """Sort(OEReceptorIter self, OEBinaryMolBasePred sort_criterion)"""
        return _oedocking.OEReceptorIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """ToFirst(OEReceptorIter self) -> OEMolBaseIter"""
        return _oedocking.OEReceptorIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """ToLast(OEReceptorIter self) -> OEMolBaseIter"""
        return _oedocking.OEReceptorIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMolBase &":
        """__ref__(OEReceptorIter self) -> OEMolBase"""
        return _oedocking.OEReceptorIter___ref__(self)


    def IsValid(self):
      return _oedocking.OEReceptorIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEReceptorIter self) -> PyObject *"""
        return _oedocking.OEReceptorIter_next(self)


    def Target(self) -> "OEChem::OEMolBase &":
        """Target(OEReceptorIter self) -> OEMolBase"""
        return _oedocking.OEReceptorIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """
        Next(OEReceptorIter self) -> OEMolBaseIter
        Next(OEReceptorIter self, int i) -> OEMolBaseIter
        """
        return _oedocking.OEReceptorIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """
        Prev(OEReceptorIter self) -> OEMolBaseIter
        Prev(OEReceptorIter self, int i) -> OEMolBaseIter
        """
        return _oedocking.OEReceptorIter_Prev(self, *args)

OEReceptorIter_swigregister = _oedocking.OEReceptorIter_swigregister
OEReceptorIter_swigregister(OEReceptorIter)

class OESinglePoseResult(object):
    """Proxy of C++ OEDocking::OESinglePoseResult class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oedocking.delete_OESinglePoseResult
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEDocking::OESinglePoseResult self) -> OESinglePoseResult
        __init__(OEDocking::OESinglePoseResult self, OESinglePoseResult arg2) -> OESinglePoseResult
        """
        this = _oedocking.new_OESinglePoseResult(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetPose(self) -> "OEChem::OEMolBase const &":
        """GetPose(OESinglePoseResult self) -> OEMolBase"""
        return _oedocking.OESinglePoseResult_GetPose(self)


    def GetReceptor(self) -> "OEChem::OEMolBase const &":
        """GetReceptor(OESinglePoseResult self) -> OEMolBase"""
        return _oedocking.OESinglePoseResult_GetReceptor(self)


    def GetProbability(self) -> "double":
        """GetProbability(OESinglePoseResult self) -> double"""
        return _oedocking.OESinglePoseResult_GetProbability(self)


    def GetPositMethod(self) -> "unsigned int":
        """GetPositMethod(OESinglePoseResult self) -> unsigned int"""
        return _oedocking.OESinglePoseResult_GetPositMethod(self)


    def GetHasClash(self) -> "bool":
        """GetHasClash(OESinglePoseResult self) -> bool"""
        return _oedocking.OESinglePoseResult_GetHasClash(self)


    def GetReceptorIndex(self) -> "unsigned int":
        """GetReceptorIndex(OESinglePoseResult self) -> unsigned int"""
        return _oedocking.OESinglePoseResult_GetReceptorIndex(self)


    def GetNumContacts(self) -> "unsigned int":
        """GetNumContacts(OESinglePoseResult self) -> unsigned int"""
        return _oedocking.OESinglePoseResult_GetNumContacts(self)


    def GetNumClashes(self) -> "unsigned int":
        """GetNumClashes(OESinglePoseResult self) -> unsigned int"""
        return _oedocking.OESinglePoseResult_GetNumClashes(self)


    def GetRelaxed(self) -> "bool":
        """GetRelaxed(OESinglePoseResult self) -> bool"""
        return _oedocking.OESinglePoseResult_GetRelaxed(self)

OESinglePoseResult_swigregister = _oedocking.OESinglePoseResult_swigregister
OESinglePoseResult_swigregister(OESinglePoseResult)

class OEPositResults(object):
    """Proxy of C++ OEDocking::OEPositResults class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    __swig_destroy__ = _oedocking.delete_OEPositResults
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEDocking::OEPositResults self) -> OEPositResults
        __init__(OEDocking::OEPositResults self, OEPositResults arg2) -> OEPositResults
        """
        this = _oedocking.new_OEPositResults(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetReturnCode(self) -> "unsigned int":
        """GetReturnCode(OEPositResults self) -> unsigned int"""
        return _oedocking.OEPositResults_GetReturnCode(self)


    def GetNumPoses(self) -> "unsigned int":
        """GetNumPoses(OEPositResults self) -> unsigned int"""
        return _oedocking.OEPositResults_GetNumPoses(self)


    def GetSinglePoseResults(self) -> "OESystem::OEIterBase< OEDocking::OESinglePoseResult > *":
        """GetSinglePoseResults(OEPositResults self) -> OESystem::OEIterBase< OEDocking::OESinglePoseResult > *"""
        return _oedocking.OEPositResults_GetSinglePoseResults(self)

OEPositResults_swigregister = _oedocking.OEPositResults_swigregister
OEPositResults_swigregister(OEPositResults)

class OEPositOptions(oechem.OEOptions):
    """Proxy of C++ OEDocking::OEPositOptions 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__(OEDocking::OEPositOptions self, bool const fullConformationalSearch=True, unsigned int const ipositMethods) -> OEPositOptions
        __init__(OEDocking::OEPositOptions self, bool const fullConformationalSearch=True) -> OEPositOptions
        __init__(OEDocking::OEPositOptions self) -> OEPositOptions
        __init__(OEDocking::OEPositOptions self, OEPositOptions arg2) -> OEPositOptions
        """
        this = _oedocking.new_OEPositOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEPositOptions
    __del__ = lambda self: None

    def GetFullConformationSearch(self) -> "bool":
        """GetFullConformationSearch(OEPositOptions self) -> bool"""
        return _oedocking.OEPositOptions_GetFullConformationSearch(self)


    def SetFullConformationSearch(self, value: 'bool const') -> "bool":
        """SetFullConformationSearch(OEPositOptions self, bool const value) -> bool"""
        return _oedocking.OEPositOptions_SetFullConformationSearch(self, value)


    def GetIgnoreNitrogenStereo(self) -> "bool":
        """GetIgnoreNitrogenStereo(OEPositOptions self) -> bool"""
        return _oedocking.OEPositOptions_GetIgnoreNitrogenStereo(self)


    def SetIgnoreNitrogenStereo(self, value: 'bool const') -> "bool":
        """SetIgnoreNitrogenStereo(OEPositOptions self, bool const value) -> bool"""
        return _oedocking.OEPositOptions_SetIgnoreNitrogenStereo(self, value)


    def GetExcludeSelf(self) -> "bool":
        """GetExcludeSelf(OEPositOptions self) -> bool"""
        return _oedocking.OEPositOptions_GetExcludeSelf(self)


    def SetExcludeSelf(self, value: 'bool const') -> "bool":
        """SetExcludeSelf(OEPositOptions self, bool const value) -> bool"""
        return _oedocking.OEPositOptions_SetExcludeSelf(self, value)


    def GetMinProbability(self) -> "double":
        """GetMinProbability(OEPositOptions self) -> double"""
        return _oedocking.OEPositOptions_GetMinProbability(self)


    def SetMinProbability(self, value: 'double const') -> "bool":
        """SetMinProbability(OEPositOptions self, double const value) -> bool"""
        return _oedocking.OEPositOptions_SetMinProbability(self, value)


    def GetPoserCacheCount(self) -> "unsigned int":
        """GetPoserCacheCount(OEPositOptions self) -> unsigned int"""
        return _oedocking.OEPositOptions_GetPoserCacheCount(self)


    def SetPoserCacheCount(self, value: 'unsigned int const') -> "bool":
        """SetPoserCacheCount(OEPositOptions self, unsigned int const value) -> bool"""
        return _oedocking.OEPositOptions_SetPoserCacheCount(self, value)


    def GetPositMethods(self) -> "unsigned int":
        """GetPositMethods(OEPositOptions self) -> unsigned int"""
        return _oedocking.OEPositOptions_GetPositMethods(self)


    def SetPositMethods(self, value: 'unsigned int const') -> "bool":
        """SetPositMethods(OEPositOptions self, unsigned int const value) -> bool"""
        return _oedocking.OEPositOptions_SetPositMethods(self, value)


    def GetAllowedClashType(self) -> "unsigned int":
        """GetAllowedClashType(OEPositOptions self) -> unsigned int"""
        return _oedocking.OEPositOptions_GetAllowedClashType(self)


    def SetAllowedClashType(self, value: 'unsigned int const') -> "bool":
        """SetAllowedClashType(OEPositOptions self, unsigned int const value) -> bool"""
        return _oedocking.OEPositOptions_SetAllowedClashType(self, value)


    def GetPoseRelaxMode(self) -> "unsigned int":
        """GetPoseRelaxMode(OEPositOptions self) -> unsigned int"""
        return _oedocking.OEPositOptions_GetPoseRelaxMode(self)


    def SetPoseRelaxMode(self, value: 'unsigned int const') -> "bool":
        """SetPoseRelaxMode(OEPositOptions self, unsigned int const value) -> bool"""
        return _oedocking.OEPositOptions_SetPoseRelaxMode(self, value)


    def CreateCopy(self) -> "OEDocking::OEPositOptions *":
        """CreateCopy(OEPositOptions self) -> OEPositOptions"""
        return _oedocking.OEPositOptions_CreateCopy(self)

OEPositOptions_swigregister = _oedocking.OEPositOptions_swigregister
OEPositOptions_swigregister(OEPositOptions)

class OEPosit(object):
    """Proxy of C++ OEDocking::OEPosit 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__(OEDocking::OEPosit self, OEPositOptions options) -> OEPosit
        __init__(OEDocking::OEPosit self) -> OEPosit
        __init__(OEDocking::OEPosit self, OEPosit arg2) -> OEPosit
        """
        this = _oedocking.new_OEPosit(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oedocking.delete_OEPosit
    __del__ = lambda self: None

    def IsInitialized(self) -> "bool":
        """IsInitialized(OEPosit self) -> bool"""
        return _oedocking.OEPosit_IsInitialized(self)


    def Initialize(self, receptor: 'OEMolBase') -> "bool":
        """Initialize(OEPosit self, OEMolBase receptor) -> bool"""
        return _oedocking.OEPosit_Initialize(self, receptor)


    def AddReceptor(self, receptor: 'OEMolBase') -> "bool":
        """AddReceptor(OEPosit self, OEMolBase receptor) -> bool"""
        return _oedocking.OEPosit_AddReceptor(self, receptor)


    def ClearReceptors(self) -> "void":
        """ClearReceptors(OEPosit self)"""
        return _oedocking.OEPosit_ClearReceptors(self)


    def Dock(self, *args) -> "unsigned int":
        """
        Dock(OEPosit self, OESinglePoseResult res, OEMCMolBase mol) -> unsigned int
        Dock(OEPosit self, OEPositResults res, OEMCMolBase mol, unsigned int const numPoses=1) -> unsigned int
        Dock(OEPosit self, OEPositResults res, OEMCMolBase mol) -> unsigned int
        """
        return _oedocking.OEPosit_Dock(self, *args)


    def GetName(self) -> "std::string":
        """GetName(OEPosit self) -> std::string"""
        return _oedocking.OEPosit_GetName(self)


    def GetHighScoresAreBetter(self) -> "bool":
        """GetHighScoresAreBetter(OEPosit self) -> bool"""
        return _oedocking.OEPosit_GetHighScoresAreBetter(self)


    def GetInvalidScore(self) -> "float":
        """GetInvalidScore(OEPosit self) -> float"""
        return _oedocking.OEPosit_GetInvalidScore(self)


    def ScoreLigand(self, pose: 'OEMolBase') -> "float":
        """ScoreLigand(OEPosit self, OEMolBase pose) -> float"""
        return _oedocking.OEPosit_ScoreLigand(self, pose)


    def RankReceptors(self, mol: 'OEMCMolBase') -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """RankReceptors(OEPosit self, OEMCMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oedocking.OEPosit_RankReceptors(self, mol)


    def DockMultiConformerMolecule(self, *args) -> "unsigned int":
        """
        DockMultiConformerMolecule(OEPosit self, OEMCMolBase dockedMol, OEMCMolBase inputMol, unsigned int numPoses=1) -> unsigned int
        DockMultiConformerMolecule(OEPosit self, OEMCMolBase dockedMol, OEMCMolBase inputMol) -> unsigned int
        DockMultiConformerMolecule(OEPosit self, OEMolBase dockedMol, OEMCMolBase inputMol) -> unsigned int
        """
        return _oedocking.OEPosit_DockMultiConformerMolecule(self, *args)

OEPosit_swigregister = _oedocking.OEPosit_swigregister
OEPosit_swigregister(OEPosit)


def OEHasClash(ligand: 'OEMolBase', receptor: 'OEMolBase', allowedType: 'unsigned int const') -> "bool":
    """OEHasClash(OEMolBase ligand, OEMolBase receptor, unsigned int const allowedType) -> bool"""
    return _oedocking.OEHasClash(ligand, receptor, allowedType)

def OEGetEstimatedPositProbability(ligand: 'OEMCMolBase', receptor: 'OEMolBase') -> "double":
    """OEGetEstimatedPositProbability(OEMCMolBase ligand, OEMolBase receptor) -> double"""
    return _oedocking.OEGetEstimatedPositProbability(ligand, receptor)

def OEPositMethodGetName(method: 'unsigned int const') -> "std::string":
    """OEPositMethodGetName(unsigned int const method) -> std::string"""
    return _oedocking.OEPositMethodGetName(method)

def OEGetPositMethod(arg1: 'OEMolBase') -> "unsigned int":
    """OEGetPositMethod(OEMolBase arg1) -> unsigned int"""
    return _oedocking.OEGetPositMethod(arg1)

def OESetSDScore(*args) -> "bool":
    """
    OESetSDScore(OEMCMolBase ligand, OEDock scoreFxn, std::string tag, bool sortPoses=False) -> bool
    OESetSDScore(OEMCMolBase ligand, OEDock scoreFxn, std::string tag) -> bool
    OESetSDScore(OEMolBase ligand, OEDock scoreFxn, std::string tag) -> bool
    OESetSDScore(OEMCMolBase ligand, OEScore scoreFxn, std::string tag, bool sortPoses=False) -> bool
    OESetSDScore(OEMCMolBase ligand, OEScore scoreFxn, std::string tag) -> bool
    OESetSDScore(OEMolBase ligand, OEScore scoreFxn, std::string tag) -> bool
    OESetSDScore(OEMolBase ligand, OEPosit scoreFxn, std::string tag) -> bool
    OESetSDScore(OEMolBase ligand, OEPosit scoreFxn) -> bool
    OESetSDScore(OEMCMolBase ligand, OEPosit scoreFxn, std::string tag, bool sortPoses=False) -> bool
    OESetSDScore(OEMCMolBase ligand, OEPosit scoreFxn, std::string tag) -> bool
    """
    return _oedocking.OESetSDScore(*args)

def OEAddDockingInteractions(container: 'OEInteractionHintContainer') -> "bool":
    """OEAddDockingInteractions(OEInteractionHintContainer container) -> bool"""
    return _oedocking.OEAddDockingInteractions(container)

def OEJSONBytesToReceptor(c: 'OEMolBase', json: 'PyObject *') -> "PyObject *":
    """OEJSONBytesToReceptor(OEMolBase c, PyObject * json) -> PyObject *"""
    return _oedocking.OEJSONBytesToReceptor(c, json)

def OEReceptorToJSONBytes(*args) -> "PyObject *":
    """
    OEReceptorToJSONBytes(OEMolBase c, unsigned int flavor) -> PyObject
    OEReceptorToJSONBytes(OEMolBase c) -> PyObject *
    """
    return _oedocking.OEReceptorToJSONBytes(*args)

def OEReadReceptorFromBytes(*args) -> "PyObject *":
    """
    OEReadReceptorFromBytes(OEMolBase c, char const * format, PyObject * rcbytes) -> PyObject
    OEReadReceptorFromBytes(OEMolBase c, unsigned int format, unsigned int flavor, bool gzip, PyObject * rcbytes) -> PyObject *
    """
    return _oedocking.OEReadReceptorFromBytes(*args)

def OEWriteReceptorToBytes(*args) -> "PyObject *":
    """
    OEWriteReceptorToBytes(char const * format, OEMolBase c) -> PyObject
    OEWriteReceptorToBytes(unsigned int format, unsigned int flavor, bool gzip, OEMolBase c) -> PyObject *
    """
    return _oedocking.OEWriteReceptorToBytes(*args)


