# 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.8
#
# 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

def swig_import_helper():
    from os.path import dirname
    import imp
    fp = None
    try:
        fp, pathname, description = imp.find_module('_oechem', [dirname(__file__)])
    except ImportError:
        # OpenEye Import Statements
        fp, pathname, description = imp.find_module('libs', [dirname(__file__)])
        try:
            libs = imp.load_module('libs', fp, pathname, description)
        finally:
            if fp is not None:
                fp.close()

        import sys
        assert not sys.platform.startswith('win')
        
        _oechem = libs.OEGetModule('_oechem215')
        return _oechem

_oechem = swig_import_helper()
del swig_import_helper
del version_info
try:
    _swig_property = property
except NameError:
    pass  # Python < 2.2 doesn't have 'property'.


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_nondynamic(self, class_type, name, static=1):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    if (not static):
        return object.__getattr__(self, name)
    else:
        raise AttributeError(name)

def _swig_getattr(self, class_type, name):
    return _swig_getattr_nondynamic(self, class_type, name, 0)


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

try:
    _object = object
    _newclass = 1
except AttributeError:
    class _object:
        pass
    _newclass = 0



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 Exception:
    weakref_proxy = lambda x: x



_oechem.OEErrorLevel_Undefined_swigconstant(_oechem)
OEErrorLevel_Undefined = _oechem.OEErrorLevel_Undefined

_oechem.OEErrorLevel_Debug_swigconstant(_oechem)
OEErrorLevel_Debug = _oechem.OEErrorLevel_Debug

_oechem.OEErrorLevel_Verbose_swigconstant(_oechem)
OEErrorLevel_Verbose = _oechem.OEErrorLevel_Verbose

_oechem.OEErrorLevel_Info_swigconstant(_oechem)
OEErrorLevel_Info = _oechem.OEErrorLevel_Info

_oechem.OEErrorLevel_Warning_swigconstant(_oechem)
OEErrorLevel_Warning = _oechem.OEErrorLevel_Warning

_oechem.OEErrorLevel_Error_swigconstant(_oechem)
OEErrorLevel_Error = _oechem.OEErrorLevel_Error

_oechem.OEErrorLevel_Fatal_swigconstant(_oechem)
OEErrorLevel_Fatal = _oechem.OEErrorLevel_Fatal

_oechem.OEErrorLevel_Usage_swigconstant(_oechem)
OEErrorLevel_Usage = _oechem.OEErrorLevel_Usage

_oechem.OEErrorLevel_Quiet_swigconstant(_oechem)
OEErrorLevel_Quiet = _oechem.OEErrorLevel_Quiet

_oechem.OEErrorLevel_MAX_swigconstant(_oechem)
OEErrorLevel_MAX = _oechem.OEErrorLevel_MAX

_oechem.OEErrorLevel_MIN_swigconstant(_oechem)
OEErrorLevel_MIN = _oechem.OEErrorLevel_MIN

OEErrorLevel_Default = OEErrorLevel_Info


_oechem.OEBDictionary_OEBinaryTagMaxLength_swigconstant(_oechem)
OEBDictionary_OEBinaryTagMaxLength = _oechem.OEBDictionary_OEBinaryTagMaxLength

_oechem.OEBDictionary_UDT_swigconstant(_oechem)
OEBDictionary_UDT = _oechem.OEBDictionary_UDT

_oechem.OEBDictionary_UserDefinedTag_swigconstant(_oechem)
OEBDictionary_UserDefinedTag = _oechem.OEBDictionary_UserDefinedTag

_oechem.OEBDictionary_OEBasePOD_swigconstant(_oechem)
OEBDictionary_OEBasePOD = _oechem.OEBDictionary_OEBasePOD

_oechem.OEBReturnCode_Success_swigconstant(_oechem)
OEBReturnCode_Success = _oechem.OEBReturnCode_Success

_oechem.OEBReturnCode_NoParentClass_swigconstant(_oechem)
OEBReturnCode_NoParentClass = _oechem.OEBReturnCode_NoParentClass

_oechem.OEBReturnCode_CheckFailed_swigconstant(_oechem)
OEBReturnCode_CheckFailed = _oechem.OEBReturnCode_CheckFailed

_oechem.OEBReturnCode_StreamFailed_swigconstant(_oechem)
OEBReturnCode_StreamFailed = _oechem.OEBReturnCode_StreamFailed

_oechem.OEBReturnCode_IncorrectSize_swigconstant(_oechem)
OEBReturnCode_IncorrectSize = _oechem.OEBReturnCode_IncorrectSize

_oechem.OEBReturnCode_Continue_swigconstant(_oechem)
OEBReturnCode_Continue = _oechem.OEBReturnCode_Continue

_oechem.OEBReturnCode_ReadTagFailed_swigconstant(_oechem)
OEBReturnCode_ReadTagFailed = _oechem.OEBReturnCode_ReadTagFailed

_oechem.OEBReturnCode_CorruptHeader_swigconstant(_oechem)
OEBReturnCode_CorruptHeader = _oechem.OEBReturnCode_CorruptHeader

_oechem.OEBReturnCode_EndOfFile_swigconstant(_oechem)
OEBReturnCode_EndOfFile = _oechem.OEBReturnCode_EndOfFile

_oechem.OEBReturnCode_ReadLengthFailed_swigconstant(_oechem)
OEBReturnCode_ReadLengthFailed = _oechem.OEBReturnCode_ReadLengthFailed

_oechem.OEBReturnCode_TypeCheckFailed_swigconstant(_oechem)
OEBReturnCode_TypeCheckFailed = _oechem.OEBReturnCode_TypeCheckFailed

_oechem.OEBReturnCode_IncorrectHandlerType_swigconstant(_oechem)
OEBReturnCode_IncorrectHandlerType = _oechem.OEBReturnCode_IncorrectHandlerType

_oechem.OEParamVisibility_Simple_swigconstant(_oechem)
OEParamVisibility_Simple = _oechem.OEParamVisibility_Simple

_oechem.OEParamVisibility_Normal_swigconstant(_oechem)
OEParamVisibility_Normal = _oechem.OEParamVisibility_Normal

_oechem.OEParamVisibility_Hidden_swigconstant(_oechem)
OEParamVisibility_Hidden = _oechem.OEParamVisibility_Hidden

_oechem.OEParamVisibility_MAX_swigconstant(_oechem)
OEParamVisibility_MAX = _oechem.OEParamVisibility_MAX

_oechem.OEMemPoolMode_SingleThreaded_swigconstant(_oechem)
OEMemPoolMode_SingleThreaded = _oechem.OEMemPoolMode_SingleThreaded

_oechem.OEMemPoolMode_Mutexed_swigconstant(_oechem)
OEMemPoolMode_Mutexed = _oechem.OEMemPoolMode_Mutexed

_oechem.OEMemPoolMode_ThreadLocal_swigconstant(_oechem)
OEMemPoolMode_ThreadLocal = _oechem.OEMemPoolMode_ThreadLocal

_oechem.OEMemPoolMode_BoundedCache_swigconstant(_oechem)
OEMemPoolMode_BoundedCache = _oechem.OEMemPoolMode_BoundedCache

_oechem.OEMemPoolMode_UnboundedCache_swigconstant(_oechem)
OEMemPoolMode_UnboundedCache = _oechem.OEMemPoolMode_UnboundedCache

_oechem.OEMemPoolMode_System_swigconstant(_oechem)
OEMemPoolMode_System = _oechem.OEMemPoolMode_System

_oechem.OEMemPoolMode_Spinlocked_swigconstant(_oechem)
OEMemPoolMode_Spinlocked = _oechem.OEMemPoolMode_Spinlocked

OEMemPoolMode_Default = OEMemPoolMode_ThreadLocal|OEMemPoolMode_UnboundedCache


_oechem.OEAltLocFactOption_None_swigconstant(_oechem)
OEAltLocFactOption_None = _oechem.OEAltLocFactOption_None

_oechem.OEAltLocFactOption_TrustInputBonds_swigconstant(_oechem)
OEAltLocFactOption_TrustInputBonds = _oechem.OEAltLocFactOption_TrustInputBonds

_oechem.OEMakeAltMolOption_None_swigconstant(_oechem)
OEMakeAltMolOption_None = _oechem.OEMakeAltMolOption_None

_oechem.OEMakeAltMolOption_RemoveAltCodes_swigconstant(_oechem)
OEMakeAltMolOption_RemoveAltCodes = _oechem.OEMakeAltMolOption_RemoveAltCodes

_oechem.OEAroModel_Undefined_swigconstant(_oechem)
OEAroModel_Undefined = _oechem.OEAroModel_Undefined

_oechem.OEAroModel_Daylight_swigconstant(_oechem)
OEAroModel_Daylight = _oechem.OEAroModel_Daylight

_oechem.OEAroModel_OpenEye_swigconstant(_oechem)
OEAroModel_OpenEye = _oechem.OEAroModel_OpenEye

_oechem.OEAroModel_Tripos_swigconstant(_oechem)
OEAroModel_Tripos = _oechem.OEAroModel_Tripos

_oechem.OEAroModel_MMFF_swigconstant(_oechem)
OEAroModel_MMFF = _oechem.OEAroModel_MMFF

_oechem.OEAroModel_MDL_swigconstant(_oechem)
OEAroModel_MDL = _oechem.OEAroModel_MDL

_oechem.OETriposType_Du_swigconstant(_oechem)
OETriposType_Du = _oechem.OETriposType_Du

_oechem.OETriposType_Al_swigconstant(_oechem)
OETriposType_Al = _oechem.OETriposType_Al

_oechem.OETriposType_Br_swigconstant(_oechem)
OETriposType_Br = _oechem.OETriposType_Br

_oechem.OETriposType_C1_swigconstant(_oechem)
OETriposType_C1 = _oechem.OETriposType_C1

_oechem.OETriposType_C2_swigconstant(_oechem)
OETriposType_C2 = _oechem.OETriposType_C2

_oechem.OETriposType_C3_swigconstant(_oechem)
OETriposType_C3 = _oechem.OETriposType_C3

_oechem.OETriposType_Car_swigconstant(_oechem)
OETriposType_Car = _oechem.OETriposType_Car

_oechem.OETriposType_Ccat_swigconstant(_oechem)
OETriposType_Ccat = _oechem.OETriposType_Ccat

_oechem.OETriposType_Ca_swigconstant(_oechem)
OETriposType_Ca = _oechem.OETriposType_Ca

_oechem.OETriposType_Cl_swigconstant(_oechem)
OETriposType_Cl = _oechem.OETriposType_Cl

_oechem.OETriposType_F_swigconstant(_oechem)
OETriposType_F = _oechem.OETriposType_F

_oechem.OETriposType_H_swigconstant(_oechem)
OETriposType_H = _oechem.OETriposType_H

_oechem.OETriposType_I_swigconstant(_oechem)
OETriposType_I = _oechem.OETriposType_I

_oechem.OETriposType_K_swigconstant(_oechem)
OETriposType_K = _oechem.OETriposType_K

_oechem.OETriposType_Li_swigconstant(_oechem)
OETriposType_Li = _oechem.OETriposType_Li

_oechem.OETriposType_Lp_swigconstant(_oechem)
OETriposType_Lp = _oechem.OETriposType_Lp

_oechem.OETriposType_N1_swigconstant(_oechem)
OETriposType_N1 = _oechem.OETriposType_N1

_oechem.OETriposType_N2_swigconstant(_oechem)
OETriposType_N2 = _oechem.OETriposType_N2

_oechem.OETriposType_N3_swigconstant(_oechem)
OETriposType_N3 = _oechem.OETriposType_N3

_oechem.OETriposType_N4_swigconstant(_oechem)
OETriposType_N4 = _oechem.OETriposType_N4

_oechem.OETriposType_Nam_swigconstant(_oechem)
OETriposType_Nam = _oechem.OETriposType_Nam

_oechem.OETriposType_Nar_swigconstant(_oechem)
OETriposType_Nar = _oechem.OETriposType_Nar

_oechem.OETriposType_Npl3_swigconstant(_oechem)
OETriposType_Npl3 = _oechem.OETriposType_Npl3

_oechem.OETriposType_Na_swigconstant(_oechem)
OETriposType_Na = _oechem.OETriposType_Na

_oechem.OETriposType_O2_swigconstant(_oechem)
OETriposType_O2 = _oechem.OETriposType_O2

_oechem.OETriposType_O3_swigconstant(_oechem)
OETriposType_O3 = _oechem.OETriposType_O3

_oechem.OETriposType_Oco2_swigconstant(_oechem)
OETriposType_Oco2 = _oechem.OETriposType_Oco2

_oechem.OETriposType_P3_swigconstant(_oechem)
OETriposType_P3 = _oechem.OETriposType_P3

_oechem.OETriposType_S2_swigconstant(_oechem)
OETriposType_S2 = _oechem.OETriposType_S2

_oechem.OETriposType_S3_swigconstant(_oechem)
OETriposType_S3 = _oechem.OETriposType_S3

_oechem.OETriposType_So_swigconstant(_oechem)
OETriposType_So = _oechem.OETriposType_So

_oechem.OETriposType_So2_swigconstant(_oechem)
OETriposType_So2 = _oechem.OETriposType_So2

_oechem.OETriposType_Si_swigconstant(_oechem)
OETriposType_Si = _oechem.OETriposType_Si

_oechem.OETriposType_Cu_swigconstant(_oechem)
OETriposType_Cu = _oechem.OETriposType_Cu

_oechem.OETriposType_Cooh_swigconstant(_oechem)
OETriposType_Cooh = _oechem.OETriposType_Cooh

_oechem.OETriposType_Croh_swigconstant(_oechem)
OETriposType_Croh = _oechem.OETriposType_Croh

_oechem.OETriposType_Crth_swigconstant(_oechem)
OETriposType_Crth = _oechem.OETriposType_Crth

_oechem.OETriposType_Fe_swigconstant(_oechem)
OETriposType_Fe = _oechem.OETriposType_Fe

_oechem.OETriposType_Mg_swigconstant(_oechem)
OETriposType_Mg = _oechem.OETriposType_Mg

_oechem.OETriposType_Mn_swigconstant(_oechem)
OETriposType_Mn = _oechem.OETriposType_Mn

_oechem.OETriposType_Mo_swigconstant(_oechem)
OETriposType_Mo = _oechem.OETriposType_Mo

_oechem.OETriposType_Se_swigconstant(_oechem)
OETriposType_Se = _oechem.OETriposType_Se

_oechem.OETriposType_Sn_swigconstant(_oechem)
OETriposType_Sn = _oechem.OETriposType_Sn

_oechem.OETriposType_Zn_swigconstant(_oechem)
OETriposType_Zn = _oechem.OETriposType_Zn

_oechem.OETriposType_MAXTYPE_swigconstant(_oechem)
OETriposType_MAXTYPE = _oechem.OETriposType_MAXTYPE

_oechem.OEMModType_C1_swigconstant(_oechem)
OEMModType_C1 = _oechem.OEMModType_C1

_oechem.OEMModType_C2_swigconstant(_oechem)
OEMModType_C2 = _oechem.OEMModType_C2

_oechem.OEMModType_C3_swigconstant(_oechem)
OEMModType_C3 = _oechem.OEMModType_C3

_oechem.OEMModType_CA_swigconstant(_oechem)
OEMModType_CA = _oechem.OEMModType_CA

_oechem.OEMModType_CB_swigconstant(_oechem)
OEMModType_CB = _oechem.OEMModType_CB

_oechem.OEMModType_CC_swigconstant(_oechem)
OEMModType_CC = _oechem.OEMModType_CC

_oechem.OEMModType_CD_swigconstant(_oechem)
OEMModType_CD = _oechem.OEMModType_CD

_oechem.OEMModType_CE_swigconstant(_oechem)
OEMModType_CE = _oechem.OEMModType_CE

_oechem.OEMModType_CF_swigconstant(_oechem)
OEMModType_CF = _oechem.OEMModType_CF

_oechem.OEMModType_CM_swigconstant(_oechem)
OEMModType_CM = _oechem.OEMModType_CM

_oechem.OEMModType_CP_swigconstant(_oechem)
OEMModType_CP = _oechem.OEMModType_CP

_oechem.OEMModType_CR_swigconstant(_oechem)
OEMModType_CR = _oechem.OEMModType_CR

_oechem.OEMModType_C0_swigconstant(_oechem)
OEMModType_C0 = _oechem.OEMModType_C0

_oechem.OEMModType_O2_swigconstant(_oechem)
OEMModType_O2 = _oechem.OEMModType_O2

_oechem.OEMModType_O3_swigconstant(_oechem)
OEMModType_O3 = _oechem.OEMModType_O3

_oechem.OEMModType_OA_swigconstant(_oechem)
OEMModType_OA = _oechem.OEMModType_OA

_oechem.OEMModType_OM_swigconstant(_oechem)
OEMModType_OM = _oechem.OEMModType_OM

_oechem.OEMModType_OW_swigconstant(_oechem)
OEMModType_OW = _oechem.OEMModType_OW

_oechem.OEMModType_OP_swigconstant(_oechem)
OEMModType_OP = _oechem.OEMModType_OP

_oechem.OEMModType_OQ_swigconstant(_oechem)
OEMModType_OQ = _oechem.OEMModType_OQ

_oechem.OEMModType_O0_swigconstant(_oechem)
OEMModType_O0 = _oechem.OEMModType_O0

_oechem.OEMModType_N1_swigconstant(_oechem)
OEMModType_N1 = _oechem.OEMModType_N1

_oechem.OEMModType_N2_swigconstant(_oechem)
OEMModType_N2 = _oechem.OEMModType_N2

_oechem.OEMModType_N3_swigconstant(_oechem)
OEMModType_N3 = _oechem.OEMModType_N3

_oechem.OEMModType_NA_swigconstant(_oechem)
OEMModType_NA = _oechem.OEMModType_NA

_oechem.OEMModType_NB_swigconstant(_oechem)
OEMModType_NB = _oechem.OEMModType_NB

_oechem.OEMModType_NC_swigconstant(_oechem)
OEMModType_NC = _oechem.OEMModType_NC

_oechem.OEMModType_ND_swigconstant(_oechem)
OEMModType_ND = _oechem.OEMModType_ND

_oechem.OEMModType_N4_swigconstant(_oechem)
OEMModType_N4 = _oechem.OEMModType_N4

_oechem.OEMModType_N5_swigconstant(_oechem)
OEMModType_N5 = _oechem.OEMModType_N5

_oechem.OEMModType_NE_swigconstant(_oechem)
OEMModType_NE = _oechem.OEMModType_NE

_oechem.OEMModType_NF_swigconstant(_oechem)
OEMModType_NF = _oechem.OEMModType_NF

_oechem.OEMModType_NG_swigconstant(_oechem)
OEMModType_NG = _oechem.OEMModType_NG

_oechem.OEMModType_NH_swigconstant(_oechem)
OEMModType_NH = _oechem.OEMModType_NH

_oechem.OEMModType_NI_swigconstant(_oechem)
OEMModType_NI = _oechem.OEMModType_NI

_oechem.OEMModType_NM_swigconstant(_oechem)
OEMModType_NM = _oechem.OEMModType_NM

_oechem.OEMModType_NP_swigconstant(_oechem)
OEMModType_NP = _oechem.OEMModType_NP

_oechem.OEMModType_N0_swigconstant(_oechem)
OEMModType_N0 = _oechem.OEMModType_N0

_oechem.OEMModType_H1_swigconstant(_oechem)
OEMModType_H1 = _oechem.OEMModType_H1

_oechem.OEMModType_H2_swigconstant(_oechem)
OEMModType_H2 = _oechem.OEMModType_H2

_oechem.OEMModType_H3_swigconstant(_oechem)
OEMModType_H3 = _oechem.OEMModType_H3

_oechem.OEMModType_H4_swigconstant(_oechem)
OEMModType_H4 = _oechem.OEMModType_H4

_oechem.OEMModType_H5_swigconstant(_oechem)
OEMModType_H5 = _oechem.OEMModType_H5

_oechem.OEMModType_H0_swigconstant(_oechem)
OEMModType_H0 = _oechem.OEMModType_H0

_oechem.OEMModType_S1_swigconstant(_oechem)
OEMModType_S1 = _oechem.OEMModType_S1

_oechem.OEMModType_SA_swigconstant(_oechem)
OEMModType_SA = _oechem.OEMModType_SA

_oechem.OEMModType_SM_swigconstant(_oechem)
OEMModType_SM = _oechem.OEMModType_SM

_oechem.OEMModType_S0_swigconstant(_oechem)
OEMModType_S0 = _oechem.OEMModType_S0

_oechem.OEMModType_P0_swigconstant(_oechem)
OEMModType_P0 = _oechem.OEMModType_P0

_oechem.OEMModType_B2_swigconstant(_oechem)
OEMModType_B2 = _oechem.OEMModType_B2

_oechem.OEMModType_B3_swigconstant(_oechem)
OEMModType_B3 = _oechem.OEMModType_B3

_oechem.OEMModType_F0_swigconstant(_oechem)
OEMModType_F0 = _oechem.OEMModType_F0

_oechem.OEMModType_Cl_swigconstant(_oechem)
OEMModType_Cl = _oechem.OEMModType_Cl

_oechem.OEMModType_Br_swigconstant(_oechem)
OEMModType_Br = _oechem.OEMModType_Br

_oechem.OEMModType_I0_swigconstant(_oechem)
OEMModType_I0 = _oechem.OEMModType_I0

_oechem.OEMModType_Si_swigconstant(_oechem)
OEMModType_Si = _oechem.OEMModType_Si

_oechem.OEMModType_Du_swigconstant(_oechem)
OEMModType_Du = _oechem.OEMModType_Du

_oechem.OEMModType_Z0_swigconstant(_oechem)
OEMModType_Z0 = _oechem.OEMModType_Z0

_oechem.OEMModType_Lp_swigconstant(_oechem)
OEMModType_Lp = _oechem.OEMModType_Lp

_oechem.OEMModType_Li_swigconstant(_oechem)
OEMModType_Li = _oechem.OEMModType_Li

_oechem.OEMModType_Na_swigconstant(_oechem)
OEMModType_Na = _oechem.OEMModType_Na

_oechem.OEMModType_K0_swigconstant(_oechem)
OEMModType_K0 = _oechem.OEMModType_K0

_oechem.OEMModType_Rb_swigconstant(_oechem)
OEMModType_Rb = _oechem.OEMModType_Rb

_oechem.OEMModType_Cs_swigconstant(_oechem)
OEMModType_Cs = _oechem.OEMModType_Cs

_oechem.OEMModType_Ca_swigconstant(_oechem)
OEMModType_Ca = _oechem.OEMModType_Ca

_oechem.OEMModType_Ba_swigconstant(_oechem)
OEMModType_Ba = _oechem.OEMModType_Ba

_oechem.OEMModType_Mg_swigconstant(_oechem)
OEMModType_Mg = _oechem.OEMModType_Mg

_oechem.OEMModType_M2_swigconstant(_oechem)
OEMModType_M2 = _oechem.OEMModType_M2

_oechem.OEMModType_M3_swigconstant(_oechem)
OEMModType_M3 = _oechem.OEMModType_M3

_oechem.OEMModType_M4_swigconstant(_oechem)
OEMModType_M4 = _oechem.OEMModType_M4

_oechem.OEMModType_M5_swigconstant(_oechem)
OEMModType_M5 = _oechem.OEMModType_M5

_oechem.OEMModType_M6_swigconstant(_oechem)
OEMModType_M6 = _oechem.OEMModType_M6

_oechem.OEMModType_M7_swigconstant(_oechem)
OEMModType_M7 = _oechem.OEMModType_M7

_oechem.OEMModType_f2_swigconstant(_oechem)
OEMModType_f2 = _oechem.OEMModType_f2

_oechem.OEMModType_f3_swigconstant(_oechem)
OEMModType_f3 = _oechem.OEMModType_f3

_oechem.OEMModType_o2_swigconstant(_oechem)
OEMModType_o2 = _oechem.OEMModType_o2

_oechem.OEMModType_o3_swigconstant(_oechem)
OEMModType_o3 = _oechem.OEMModType_o3

_oechem.OEMModType_n2_swigconstant(_oechem)
OEMModType_n2 = _oechem.OEMModType_n2

_oechem.OEMModType_n3_swigconstant(_oechem)
OEMModType_n3 = _oechem.OEMModType_n3

_oechem.OEMModType_c1_swigconstant(_oechem)
OEMModType_c1 = _oechem.OEMModType_c1

_oechem.OEMModType_c2_swigconstant(_oechem)
OEMModType_c2 = _oechem.OEMModType_c2

_oechem.OEMModType_Zn_swigconstant(_oechem)
OEMModType_Zn = _oechem.OEMModType_Zn

_oechem.OEMModType_m3_swigconstant(_oechem)
OEMModType_m3 = _oechem.OEMModType_m3

_oechem.OEMModType_m4_swigconstant(_oechem)
OEMModType_m4 = _oechem.OEMModType_m4

_oechem.OEMModType_m5_swigconstant(_oechem)
OEMModType_m5 = _oechem.OEMModType_m5

_oechem.OEMModType_m6_swigconstant(_oechem)
OEMModType_m6 = _oechem.OEMModType_m6

_oechem.OEMModType_SP_swigconstant(_oechem)
OEMModType_SP = _oechem.OEMModType_SP

_oechem.OEMModType_S2_swigconstant(_oechem)
OEMModType_S2 = _oechem.OEMModType_S2

_oechem.OEMModType_Cm_swigconstant(_oechem)
OEMModType_Cm = _oechem.OEMModType_Cm

_oechem.OEMModType_MAXTYPE_swigconstant(_oechem)
OEMModType_MAXTYPE = _oechem.OEMModType_MAXTYPE

_oechem.OECIPAtomStereo_NotStereo_swigconstant(_oechem)
OECIPAtomStereo_NotStereo = _oechem.OECIPAtomStereo_NotStereo

_oechem.OECIPAtomStereo_S_swigconstant(_oechem)
OECIPAtomStereo_S = _oechem.OECIPAtomStereo_S

_oechem.OECIPAtomStereo_R_swigconstant(_oechem)
OECIPAtomStereo_R = _oechem.OECIPAtomStereo_R

_oechem.OECIPAtomStereo_UnspecStereo_swigconstant(_oechem)
OECIPAtomStereo_UnspecStereo = _oechem.OECIPAtomStereo_UnspecStereo

_oechem.OECIPBondStereo_NotStereo_swigconstant(_oechem)
OECIPBondStereo_NotStereo = _oechem.OECIPBondStereo_NotStereo

_oechem.OECIPBondStereo_E_swigconstant(_oechem)
OECIPBondStereo_E = _oechem.OECIPBondStereo_E

_oechem.OECIPBondStereo_Z_swigconstant(_oechem)
OECIPBondStereo_Z = _oechem.OECIPBondStereo_Z

_oechem.OECIPBondStereo_UnspecStereo_swigconstant(_oechem)
OECIPBondStereo_UnspecStereo = _oechem.OECIPBondStereo_UnspecStereo

_oechem.OENearestNbrsMethod_Auto_swigconstant(_oechem)
OENearestNbrsMethod_Auto = _oechem.OENearestNbrsMethod_Auto

_oechem.OENearestNbrsMethod_AllByAll_swigconstant(_oechem)
OENearestNbrsMethod_AllByAll = _oechem.OENearestNbrsMethod_AllByAll

_oechem.OENearestNbrsMethod_ZCoordSort_swigconstant(_oechem)
OENearestNbrsMethod_ZCoordSort = _oechem.OENearestNbrsMethod_ZCoordSort

_oechem.OENearestNbrsMethod_LocalHash_swigconstant(_oechem)
OENearestNbrsMethod_LocalHash = _oechem.OENearestNbrsMethod_LocalHash

OENearestNbrsMethod_Default = OENearestNbrsMethod_Auto


_oechem.OEZap9Version_Undefined_swigconstant(_oechem)
OEZap9Version_Undefined = _oechem.OEZap9Version_Undefined

_oechem.OEZap9Version_JMC2008_swigconstant(_oechem)
OEZap9Version_JMC2008 = _oechem.OEZap9Version_JMC2008

_oechem.OEZap9Version_JCAMD2010_swigconstant(_oechem)
OEZap9Version_JCAMD2010 = _oechem.OEZap9Version_JCAMD2010

OEZap9Version_Default = OEZap9Version_JCAMD2010


_oechem.OEZap7Version_Undefined_swigconstant(_oechem)
OEZap7Version_Undefined = _oechem.OEZap7Version_Undefined

_oechem.OEZap7Version_CarbonylOxygen_swigconstant(_oechem)
OEZap7Version_CarbonylOxygen = _oechem.OEZap7Version_CarbonylOxygen

_oechem.OEZap7Version_DoublyBondedOxygen_swigconstant(_oechem)
OEZap7Version_DoublyBondedOxygen = _oechem.OEZap7Version_DoublyBondedOxygen

OEZap7Version_Default = OEZap7Version_CarbonylOxygen


_oechem.OEElemNo_H_swigconstant(_oechem)
OEElemNo_H = _oechem.OEElemNo_H

_oechem.OEElemNo_He_swigconstant(_oechem)
OEElemNo_He = _oechem.OEElemNo_He

_oechem.OEElemNo_Li_swigconstant(_oechem)
OEElemNo_Li = _oechem.OEElemNo_Li

_oechem.OEElemNo_Be_swigconstant(_oechem)
OEElemNo_Be = _oechem.OEElemNo_Be

_oechem.OEElemNo_B_swigconstant(_oechem)
OEElemNo_B = _oechem.OEElemNo_B

_oechem.OEElemNo_C_swigconstant(_oechem)
OEElemNo_C = _oechem.OEElemNo_C

_oechem.OEElemNo_N_swigconstant(_oechem)
OEElemNo_N = _oechem.OEElemNo_N

_oechem.OEElemNo_O_swigconstant(_oechem)
OEElemNo_O = _oechem.OEElemNo_O

_oechem.OEElemNo_F_swigconstant(_oechem)
OEElemNo_F = _oechem.OEElemNo_F

_oechem.OEElemNo_Ne_swigconstant(_oechem)
OEElemNo_Ne = _oechem.OEElemNo_Ne

_oechem.OEElemNo_Na_swigconstant(_oechem)
OEElemNo_Na = _oechem.OEElemNo_Na

_oechem.OEElemNo_Mg_swigconstant(_oechem)
OEElemNo_Mg = _oechem.OEElemNo_Mg

_oechem.OEElemNo_Al_swigconstant(_oechem)
OEElemNo_Al = _oechem.OEElemNo_Al

_oechem.OEElemNo_Si_swigconstant(_oechem)
OEElemNo_Si = _oechem.OEElemNo_Si

_oechem.OEElemNo_P_swigconstant(_oechem)
OEElemNo_P = _oechem.OEElemNo_P

_oechem.OEElemNo_S_swigconstant(_oechem)
OEElemNo_S = _oechem.OEElemNo_S

_oechem.OEElemNo_Cl_swigconstant(_oechem)
OEElemNo_Cl = _oechem.OEElemNo_Cl

_oechem.OEElemNo_Ar_swigconstant(_oechem)
OEElemNo_Ar = _oechem.OEElemNo_Ar

_oechem.OEElemNo_K_swigconstant(_oechem)
OEElemNo_K = _oechem.OEElemNo_K

_oechem.OEElemNo_Ca_swigconstant(_oechem)
OEElemNo_Ca = _oechem.OEElemNo_Ca

_oechem.OEElemNo_Sc_swigconstant(_oechem)
OEElemNo_Sc = _oechem.OEElemNo_Sc

_oechem.OEElemNo_Ti_swigconstant(_oechem)
OEElemNo_Ti = _oechem.OEElemNo_Ti

_oechem.OEElemNo_V_swigconstant(_oechem)
OEElemNo_V = _oechem.OEElemNo_V

_oechem.OEElemNo_Cr_swigconstant(_oechem)
OEElemNo_Cr = _oechem.OEElemNo_Cr

_oechem.OEElemNo_Mn_swigconstant(_oechem)
OEElemNo_Mn = _oechem.OEElemNo_Mn

_oechem.OEElemNo_Fe_swigconstant(_oechem)
OEElemNo_Fe = _oechem.OEElemNo_Fe

_oechem.OEElemNo_Co_swigconstant(_oechem)
OEElemNo_Co = _oechem.OEElemNo_Co

_oechem.OEElemNo_Ni_swigconstant(_oechem)
OEElemNo_Ni = _oechem.OEElemNo_Ni

_oechem.OEElemNo_Cu_swigconstant(_oechem)
OEElemNo_Cu = _oechem.OEElemNo_Cu

_oechem.OEElemNo_Zn_swigconstant(_oechem)
OEElemNo_Zn = _oechem.OEElemNo_Zn

_oechem.OEElemNo_Ga_swigconstant(_oechem)
OEElemNo_Ga = _oechem.OEElemNo_Ga

_oechem.OEElemNo_Ge_swigconstant(_oechem)
OEElemNo_Ge = _oechem.OEElemNo_Ge

_oechem.OEElemNo_As_swigconstant(_oechem)
OEElemNo_As = _oechem.OEElemNo_As

_oechem.OEElemNo_Se_swigconstant(_oechem)
OEElemNo_Se = _oechem.OEElemNo_Se

_oechem.OEElemNo_Br_swigconstant(_oechem)
OEElemNo_Br = _oechem.OEElemNo_Br

_oechem.OEElemNo_Kr_swigconstant(_oechem)
OEElemNo_Kr = _oechem.OEElemNo_Kr

_oechem.OEElemNo_Rb_swigconstant(_oechem)
OEElemNo_Rb = _oechem.OEElemNo_Rb

_oechem.OEElemNo_Sr_swigconstant(_oechem)
OEElemNo_Sr = _oechem.OEElemNo_Sr

_oechem.OEElemNo_Y_swigconstant(_oechem)
OEElemNo_Y = _oechem.OEElemNo_Y

_oechem.OEElemNo_Zr_swigconstant(_oechem)
OEElemNo_Zr = _oechem.OEElemNo_Zr

_oechem.OEElemNo_Nb_swigconstant(_oechem)
OEElemNo_Nb = _oechem.OEElemNo_Nb

_oechem.OEElemNo_Mo_swigconstant(_oechem)
OEElemNo_Mo = _oechem.OEElemNo_Mo

_oechem.OEElemNo_Tc_swigconstant(_oechem)
OEElemNo_Tc = _oechem.OEElemNo_Tc

_oechem.OEElemNo_Ru_swigconstant(_oechem)
OEElemNo_Ru = _oechem.OEElemNo_Ru

_oechem.OEElemNo_Rh_swigconstant(_oechem)
OEElemNo_Rh = _oechem.OEElemNo_Rh

_oechem.OEElemNo_Pd_swigconstant(_oechem)
OEElemNo_Pd = _oechem.OEElemNo_Pd

_oechem.OEElemNo_Ag_swigconstant(_oechem)
OEElemNo_Ag = _oechem.OEElemNo_Ag

_oechem.OEElemNo_Cd_swigconstant(_oechem)
OEElemNo_Cd = _oechem.OEElemNo_Cd

_oechem.OEElemNo_In_swigconstant(_oechem)
OEElemNo_In = _oechem.OEElemNo_In

_oechem.OEElemNo_Sn_swigconstant(_oechem)
OEElemNo_Sn = _oechem.OEElemNo_Sn

_oechem.OEElemNo_Sb_swigconstant(_oechem)
OEElemNo_Sb = _oechem.OEElemNo_Sb

_oechem.OEElemNo_Te_swigconstant(_oechem)
OEElemNo_Te = _oechem.OEElemNo_Te

_oechem.OEElemNo_I_swigconstant(_oechem)
OEElemNo_I = _oechem.OEElemNo_I

_oechem.OEElemNo_Xe_swigconstant(_oechem)
OEElemNo_Xe = _oechem.OEElemNo_Xe

_oechem.OEElemNo_Cs_swigconstant(_oechem)
OEElemNo_Cs = _oechem.OEElemNo_Cs

_oechem.OEElemNo_Ba_swigconstant(_oechem)
OEElemNo_Ba = _oechem.OEElemNo_Ba

_oechem.OEElemNo_La_swigconstant(_oechem)
OEElemNo_La = _oechem.OEElemNo_La

_oechem.OEElemNo_Ce_swigconstant(_oechem)
OEElemNo_Ce = _oechem.OEElemNo_Ce

_oechem.OEElemNo_Pr_swigconstant(_oechem)
OEElemNo_Pr = _oechem.OEElemNo_Pr

_oechem.OEElemNo_Nd_swigconstant(_oechem)
OEElemNo_Nd = _oechem.OEElemNo_Nd

_oechem.OEElemNo_Pm_swigconstant(_oechem)
OEElemNo_Pm = _oechem.OEElemNo_Pm

_oechem.OEElemNo_Sm_swigconstant(_oechem)
OEElemNo_Sm = _oechem.OEElemNo_Sm

_oechem.OEElemNo_Eu_swigconstant(_oechem)
OEElemNo_Eu = _oechem.OEElemNo_Eu

_oechem.OEElemNo_Gd_swigconstant(_oechem)
OEElemNo_Gd = _oechem.OEElemNo_Gd

_oechem.OEElemNo_Tb_swigconstant(_oechem)
OEElemNo_Tb = _oechem.OEElemNo_Tb

_oechem.OEElemNo_Dy_swigconstant(_oechem)
OEElemNo_Dy = _oechem.OEElemNo_Dy

_oechem.OEElemNo_Ho_swigconstant(_oechem)
OEElemNo_Ho = _oechem.OEElemNo_Ho

_oechem.OEElemNo_Er_swigconstant(_oechem)
OEElemNo_Er = _oechem.OEElemNo_Er

_oechem.OEElemNo_Tm_swigconstant(_oechem)
OEElemNo_Tm = _oechem.OEElemNo_Tm

_oechem.OEElemNo_Yb_swigconstant(_oechem)
OEElemNo_Yb = _oechem.OEElemNo_Yb

_oechem.OEElemNo_Lu_swigconstant(_oechem)
OEElemNo_Lu = _oechem.OEElemNo_Lu

_oechem.OEElemNo_Hf_swigconstant(_oechem)
OEElemNo_Hf = _oechem.OEElemNo_Hf

_oechem.OEElemNo_Ta_swigconstant(_oechem)
OEElemNo_Ta = _oechem.OEElemNo_Ta

_oechem.OEElemNo_W_swigconstant(_oechem)
OEElemNo_W = _oechem.OEElemNo_W

_oechem.OEElemNo_Re_swigconstant(_oechem)
OEElemNo_Re = _oechem.OEElemNo_Re

_oechem.OEElemNo_Os_swigconstant(_oechem)
OEElemNo_Os = _oechem.OEElemNo_Os

_oechem.OEElemNo_Ir_swigconstant(_oechem)
OEElemNo_Ir = _oechem.OEElemNo_Ir

_oechem.OEElemNo_Pt_swigconstant(_oechem)
OEElemNo_Pt = _oechem.OEElemNo_Pt

_oechem.OEElemNo_Au_swigconstant(_oechem)
OEElemNo_Au = _oechem.OEElemNo_Au

_oechem.OEElemNo_Hg_swigconstant(_oechem)
OEElemNo_Hg = _oechem.OEElemNo_Hg

_oechem.OEElemNo_Tl_swigconstant(_oechem)
OEElemNo_Tl = _oechem.OEElemNo_Tl

_oechem.OEElemNo_Pb_swigconstant(_oechem)
OEElemNo_Pb = _oechem.OEElemNo_Pb

_oechem.OEElemNo_Bi_swigconstant(_oechem)
OEElemNo_Bi = _oechem.OEElemNo_Bi

_oechem.OEElemNo_Po_swigconstant(_oechem)
OEElemNo_Po = _oechem.OEElemNo_Po

_oechem.OEElemNo_At_swigconstant(_oechem)
OEElemNo_At = _oechem.OEElemNo_At

_oechem.OEElemNo_Rn_swigconstant(_oechem)
OEElemNo_Rn = _oechem.OEElemNo_Rn

_oechem.OEElemNo_Fr_swigconstant(_oechem)
OEElemNo_Fr = _oechem.OEElemNo_Fr

_oechem.OEElemNo_Ra_swigconstant(_oechem)
OEElemNo_Ra = _oechem.OEElemNo_Ra

_oechem.OEElemNo_Ac_swigconstant(_oechem)
OEElemNo_Ac = _oechem.OEElemNo_Ac

_oechem.OEElemNo_Th_swigconstant(_oechem)
OEElemNo_Th = _oechem.OEElemNo_Th

_oechem.OEElemNo_Pa_swigconstant(_oechem)
OEElemNo_Pa = _oechem.OEElemNo_Pa

_oechem.OEElemNo_U_swigconstant(_oechem)
OEElemNo_U = _oechem.OEElemNo_U

_oechem.OEElemNo_Np_swigconstant(_oechem)
OEElemNo_Np = _oechem.OEElemNo_Np

_oechem.OEElemNo_Pu_swigconstant(_oechem)
OEElemNo_Pu = _oechem.OEElemNo_Pu

_oechem.OEElemNo_Am_swigconstant(_oechem)
OEElemNo_Am = _oechem.OEElemNo_Am

_oechem.OEElemNo_Cm_swigconstant(_oechem)
OEElemNo_Cm = _oechem.OEElemNo_Cm

_oechem.OEElemNo_Bk_swigconstant(_oechem)
OEElemNo_Bk = _oechem.OEElemNo_Bk

_oechem.OEElemNo_Cf_swigconstant(_oechem)
OEElemNo_Cf = _oechem.OEElemNo_Cf

_oechem.OEElemNo_Es_swigconstant(_oechem)
OEElemNo_Es = _oechem.OEElemNo_Es

_oechem.OEElemNo_Fm_swigconstant(_oechem)
OEElemNo_Fm = _oechem.OEElemNo_Fm

_oechem.OEElemNo_Md_swigconstant(_oechem)
OEElemNo_Md = _oechem.OEElemNo_Md

_oechem.OEElemNo_No_swigconstant(_oechem)
OEElemNo_No = _oechem.OEElemNo_No

_oechem.OEElemNo_Lr_swigconstant(_oechem)
OEElemNo_Lr = _oechem.OEElemNo_Lr

_oechem.OEElemNo_Rf_swigconstant(_oechem)
OEElemNo_Rf = _oechem.OEElemNo_Rf

_oechem.OEElemNo_Db_swigconstant(_oechem)
OEElemNo_Db = _oechem.OEElemNo_Db

_oechem.OEElemNo_Sg_swigconstant(_oechem)
OEElemNo_Sg = _oechem.OEElemNo_Sg

_oechem.OEElemNo_Bh_swigconstant(_oechem)
OEElemNo_Bh = _oechem.OEElemNo_Bh

_oechem.OEElemNo_Hs_swigconstant(_oechem)
OEElemNo_Hs = _oechem.OEElemNo_Hs

_oechem.OEElemNo_Mt_swigconstant(_oechem)
OEElemNo_Mt = _oechem.OEElemNo_Mt

_oechem.OEElemNo_Ds_swigconstant(_oechem)
OEElemNo_Ds = _oechem.OEElemNo_Ds

_oechem.OEElemNo_Rg_swigconstant(_oechem)
OEElemNo_Rg = _oechem.OEElemNo_Rg

_oechem.OEElemNo_MAXELEM_swigconstant(_oechem)
OEElemNo_MAXELEM = _oechem.OEElemNo_MAXELEM

_oechem.OEElemNo_Du_swigconstant(_oechem)
OEElemNo_Du = _oechem.OEElemNo_Du

_oechem.OEElemNo_Lp_swigconstant(_oechem)
OEElemNo_Lp = _oechem.OEElemNo_Lp

_oechem.OEElemNo_Xx_swigconstant(_oechem)
OEElemNo_Xx = _oechem.OEElemNo_Xx

_oechem.OEElemNo_D_swigconstant(_oechem)
OEElemNo_D = _oechem.OEElemNo_D

_oechem.OEElemNo_T_swigconstant(_oechem)
OEElemNo_T = _oechem.OEElemNo_T

_oechem.OEMDLQueryOpts_Default_swigconstant(_oechem)
OEMDLQueryOpts_Default = _oechem.OEMDLQueryOpts_Default

_oechem.OEMDLQueryOpts_SuppressExplicitH_swigconstant(_oechem)
OEMDLQueryOpts_SuppressExplicitH = _oechem.OEMDLQueryOpts_SuppressExplicitH

_oechem.OEMDLQueryOpts_AddBondAliphaticConstraint_swigconstant(_oechem)
OEMDLQueryOpts_AddBondAliphaticConstraint = _oechem.OEMDLQueryOpts_AddBondAliphaticConstraint

_oechem.OEMDLQueryOpts_AddBondTopologyConstraint_swigconstant(_oechem)
OEMDLQueryOpts_AddBondTopologyConstraint = _oechem.OEMDLQueryOpts_AddBondTopologyConstraint

_oechem.OEMDLQueryOpts_ReactionQuery_swigconstant(_oechem)
OEMDLQueryOpts_ReactionQuery = _oechem.OEMDLQueryOpts_ReactionQuery

_oechem.OEMDLQueryOpts_MatchIsotope_swigconstant(_oechem)
OEMDLQueryOpts_MatchIsotope = _oechem.OEMDLQueryOpts_MatchIsotope

_oechem.OEMDLQueryOpts_MatchAtomStereo_swigconstant(_oechem)
OEMDLQueryOpts_MatchAtomStereo = _oechem.OEMDLQueryOpts_MatchAtomStereo

_oechem.OEFormat_UNDEFINED_swigconstant(_oechem)
OEFormat_UNDEFINED = _oechem.OEFormat_UNDEFINED

_oechem.OEFormat_SMI_swigconstant(_oechem)
OEFormat_SMI = _oechem.OEFormat_SMI

_oechem.OEFormat_MDL_swigconstant(_oechem)
OEFormat_MDL = _oechem.OEFormat_MDL

_oechem.OEFormat_PDB_swigconstant(_oechem)
OEFormat_PDB = _oechem.OEFormat_PDB

_oechem.OEFormat_MOL2_swigconstant(_oechem)
OEFormat_MOL2 = _oechem.OEFormat_MOL2

_oechem.OEFormat_USM_swigconstant(_oechem)
OEFormat_USM = _oechem.OEFormat_USM

_oechem.OEFormat_ISM_swigconstant(_oechem)
OEFormat_ISM = _oechem.OEFormat_ISM

_oechem.OEFormat_MOL2H_swigconstant(_oechem)
OEFormat_MOL2H = _oechem.OEFormat_MOL2H

_oechem.OEFormat_SDF_swigconstant(_oechem)
OEFormat_SDF = _oechem.OEFormat_SDF

_oechem.OEFormat_CAN_swigconstant(_oechem)
OEFormat_CAN = _oechem.OEFormat_CAN

_oechem.OEFormat_MF_swigconstant(_oechem)
OEFormat_MF = _oechem.OEFormat_MF

_oechem.OEFormat_XYZ_swigconstant(_oechem)
OEFormat_XYZ = _oechem.OEFormat_XYZ

_oechem.OEFormat_FASTA_swigconstant(_oechem)
OEFormat_FASTA = _oechem.OEFormat_FASTA

_oechem.OEFormat_MOPAC_swigconstant(_oechem)
OEFormat_MOPAC = _oechem.OEFormat_MOPAC

_oechem.OEFormat_OEB_swigconstant(_oechem)
OEFormat_OEB = _oechem.OEFormat_OEB

_oechem.OEFormat_MMOD_swigconstant(_oechem)
OEFormat_MMOD = _oechem.OEFormat_MMOD

_oechem.OEFormat_SLN_swigconstant(_oechem)
OEFormat_SLN = _oechem.OEFormat_SLN

_oechem.OEFormat_RDF_swigconstant(_oechem)
OEFormat_RDF = _oechem.OEFormat_RDF

_oechem.OEFormat_CDX_swigconstant(_oechem)
OEFormat_CDX = _oechem.OEFormat_CDX

_oechem.OEFormat_SKC_swigconstant(_oechem)
OEFormat_SKC = _oechem.OEFormat_SKC

_oechem.OEFormat_INCHI_swigconstant(_oechem)
OEFormat_INCHI = _oechem.OEFormat_INCHI

_oechem.OEFormat_INCHIKEY_swigconstant(_oechem)
OEFormat_INCHIKEY = _oechem.OEFormat_INCHIKEY

_oechem.OEFormat_CSV_swigconstant(_oechem)
OEFormat_CSV = _oechem.OEFormat_CSV

_oechem.OEFormat_JSON_swigconstant(_oechem)
OEFormat_JSON = _oechem.OEFormat_JSON

_oechem.OEFormat_CIF_swigconstant(_oechem)
OEFormat_CIF = _oechem.OEFormat_CIF

_oechem.OEFormat_MAXFORMAT_swigconstant(_oechem)
OEFormat_MAXFORMAT = _oechem.OEFormat_MAXFORMAT

_oechem.OEFormat_Default_swigconstant(_oechem)
OEFormat_Default = _oechem.OEFormat_Default

_oechem.OEIFlavor_Generic_OEAroModelDaylight_swigconstant(_oechem)
OEIFlavor_Generic_OEAroModelDaylight = _oechem.OEIFlavor_Generic_OEAroModelDaylight

_oechem.OEIFlavor_Generic_OEAroModelOpenEye_swigconstant(_oechem)
OEIFlavor_Generic_OEAroModelOpenEye = _oechem.OEIFlavor_Generic_OEAroModelOpenEye

_oechem.OEIFlavor_Generic_OEAroModelTripos_swigconstant(_oechem)
OEIFlavor_Generic_OEAroModelTripos = _oechem.OEIFlavor_Generic_OEAroModelTripos

_oechem.OEIFlavor_Generic_OEAroModelMMFF_swigconstant(_oechem)
OEIFlavor_Generic_OEAroModelMMFF = _oechem.OEIFlavor_Generic_OEAroModelMMFF

_oechem.OEIFlavor_Generic_OEAroModelMDL_swigconstant(_oechem)
OEIFlavor_Generic_OEAroModelMDL = _oechem.OEIFlavor_Generic_OEAroModelMDL

_oechem.OEIFlavor_Generic_AroMask_swigconstant(_oechem)
OEIFlavor_Generic_AroMask = _oechem.OEIFlavor_Generic_AroMask

_oechem.OEIFlavor_Generic_Rings_swigconstant(_oechem)
OEIFlavor_Generic_Rings = _oechem.OEIFlavor_Generic_Rings

_oechem.OEIFlavor_Generic_GenericMask_swigconstant(_oechem)
OEIFlavor_Generic_GenericMask = _oechem.OEIFlavor_Generic_GenericMask

_oechem.OEIFlavor_Generic_SpecificMask_swigconstant(_oechem)
OEIFlavor_Generic_SpecificMask = _oechem.OEIFlavor_Generic_SpecificMask

_oechem.OEIFlavor_Generic_DEFAULT_swigconstant(_oechem)
OEIFlavor_Generic_DEFAULT = _oechem.OEIFlavor_Generic_DEFAULT

OEIFlavor_Generic_Default = OEIFlavor_Generic_DEFAULT


_oechem.OEIFlavor_SMI_Strict_swigconstant(_oechem)
OEIFlavor_SMI_Strict = _oechem.OEIFlavor_SMI_Strict

_oechem.OEIFlavor_SMI_Canon_swigconstant(_oechem)
OEIFlavor_SMI_Canon = _oechem.OEIFlavor_SMI_Canon

_oechem.OEIFlavor_SMI_DEFAULT_swigconstant(_oechem)
OEIFlavor_SMI_DEFAULT = _oechem.OEIFlavor_SMI_DEFAULT

OEIFlavor_SMI_Default = OEIFlavor_SMI_DEFAULT


_oechem.OEIFlavor_MDL_Default_swigconstant(_oechem)
OEIFlavor_MDL_Default = _oechem.OEIFlavor_MDL_Default

_oechem.OEIFlavor_MDL_FixBondMarks_swigconstant(_oechem)
OEIFlavor_MDL_FixBondMarks = _oechem.OEIFlavor_MDL_FixBondMarks

_oechem.OEIFlavor_MDL_SuppressImp2ExpENHSTE_swigconstant(_oechem)
OEIFlavor_MDL_SuppressImp2ExpENHSTE = _oechem.OEIFlavor_MDL_SuppressImp2ExpENHSTE

_oechem.OEIFlavor_PDB_TER_swigconstant(_oechem)
OEIFlavor_PDB_TER = _oechem.OEIFlavor_PDB_TER

_oechem.OEIFlavor_PDB_END_swigconstant(_oechem)
OEIFlavor_PDB_END = _oechem.OEIFlavor_PDB_END

_oechem.OEIFlavor_PDB_ENDM_swigconstant(_oechem)
OEIFlavor_PDB_ENDM = _oechem.OEIFlavor_PDB_ENDM

OEIFlavor_PDB_TerMask = OEIFlavor_PDB_ENDM|OEIFlavor_PDB_END|OEIFlavor_PDB_TER


_oechem.OEIFlavor_PDB_ALL_swigconstant(_oechem)
OEIFlavor_PDB_ALL = _oechem.OEIFlavor_PDB_ALL

_oechem.OEIFlavor_PDB_DATA_swigconstant(_oechem)
OEIFlavor_PDB_DATA = _oechem.OEIFlavor_PDB_DATA

_oechem.OEIFlavor_PDB_CHARGE_swigconstant(_oechem)
OEIFlavor_PDB_CHARGE = _oechem.OEIFlavor_PDB_CHARGE

_oechem.OEIFlavor_PDB_RADIUS_swigconstant(_oechem)
OEIFlavor_PDB_RADIUS = _oechem.OEIFlavor_PDB_RADIUS

OEIFlavor_PDB_DELPHI = OEIFlavor_PDB_RADIUS|OEIFlavor_PDB_CHARGE


_oechem.OEIFlavor_PDB_FORMALCHARGE_swigconstant(_oechem)
OEIFlavor_PDB_FORMALCHARGE = _oechem.OEIFlavor_PDB_FORMALCHARGE

_oechem.OEIFlavor_PDB_BasicMask_swigconstant(_oechem)
OEIFlavor_PDB_BasicMask = _oechem.OEIFlavor_PDB_BasicMask

_oechem.OEIFlavor_PDB_FormalCrg_swigconstant(_oechem)
OEIFlavor_PDB_FormalCrg = _oechem.OEIFlavor_PDB_FormalCrg

_oechem.OEIFlavor_PDB_ImplicitH_swigconstant(_oechem)
OEIFlavor_PDB_ImplicitH = _oechem.OEIFlavor_PDB_ImplicitH

_oechem.OEIFlavor_PDB_BondOrder_swigconstant(_oechem)
OEIFlavor_PDB_BondOrder = _oechem.OEIFlavor_PDB_BondOrder

_oechem.OEIFlavor_PDB_Rings_swigconstant(_oechem)
OEIFlavor_PDB_Rings = _oechem.OEIFlavor_PDB_Rings

_oechem.OEIFlavor_PDB_Connect_swigconstant(_oechem)
OEIFlavor_PDB_Connect = _oechem.OEIFlavor_PDB_Connect

_oechem.OEIFlavor_PDB_SecStruct_swigconstant(_oechem)
OEIFlavor_PDB_SecStruct = _oechem.OEIFlavor_PDB_SecStruct

_oechem.OEIFlavor_PDB_ExtraMask_swigconstant(_oechem)
OEIFlavor_PDB_ExtraMask = _oechem.OEIFlavor_PDB_ExtraMask

_oechem.OEIFlavor_PDB_AllMask_swigconstant(_oechem)
OEIFlavor_PDB_AllMask = _oechem.OEIFlavor_PDB_AllMask

OEIFlavor_PDB_DEFAULT = OEIFlavor_PDB_Connect|OEIFlavor_PDB_Rings|OEIFlavor_PDB_BondOrder|OEIFlavor_PDB_ImplicitH|OEIFlavor_PDB_FormalCrg|OEIFlavor_PDB_SecStruct|OEIFlavor_PDB_ENDM|OEIFlavor_PDB_END


OEIFlavor_PDB_Default = OEIFlavor_PDB_DEFAULT


_oechem.OEIFlavor_PDB_ALTLOC_swigconstant(_oechem)
OEIFlavor_PDB_ALTLOC = _oechem.OEIFlavor_PDB_ALTLOC

_oechem.OEIFlavor_MOL2_M2H_swigconstant(_oechem)
OEIFlavor_MOL2_M2H = _oechem.OEIFlavor_MOL2_M2H

_oechem.OEIFlavor_MOL2_Forcefield_swigconstant(_oechem)
OEIFlavor_MOL2_Forcefield = _oechem.OEIFlavor_MOL2_Forcefield

_oechem.OEIFlavor_MOL2_AllMask_swigconstant(_oechem)
OEIFlavor_MOL2_AllMask = _oechem.OEIFlavor_MOL2_AllMask

_oechem.OEIFlavor_MOL2_DEFAULT_swigconstant(_oechem)
OEIFlavor_MOL2_DEFAULT = _oechem.OEIFlavor_MOL2_DEFAULT

OEIFlavor_MOL2_Default = OEIFlavor_MOL2_DEFAULT


_oechem.OEIFlavor_BIN_Default_swigconstant(_oechem)
OEIFlavor_BIN_Default = _oechem.OEIFlavor_BIN_Default

_oechem.OEIFlavor_USM_Default_swigconstant(_oechem)
OEIFlavor_USM_Default = _oechem.OEIFlavor_USM_Default

_oechem.OEIFlavor_ISM_Default_swigconstant(_oechem)
OEIFlavor_ISM_Default = _oechem.OEIFlavor_ISM_Default

_oechem.OEIFlavor_MOL2H_M2H_swigconstant(_oechem)
OEIFlavor_MOL2H_M2H = _oechem.OEIFlavor_MOL2H_M2H

_oechem.OEIFlavor_MOL2H_AllMask_swigconstant(_oechem)
OEIFlavor_MOL2H_AllMask = _oechem.OEIFlavor_MOL2H_AllMask

_oechem.OEIFlavor_MOL2H_DEFAULT_swigconstant(_oechem)
OEIFlavor_MOL2H_DEFAULT = _oechem.OEIFlavor_MOL2H_DEFAULT

OEIFlavor_MOL2H_Default = OEIFlavor_MOL2H_DEFAULT


_oechem.OEIFlavor_SDF_Default_swigconstant(_oechem)
OEIFlavor_SDF_Default = _oechem.OEIFlavor_SDF_Default

_oechem.OEIFlavor_SDF_FixBondMarks_swigconstant(_oechem)
OEIFlavor_SDF_FixBondMarks = _oechem.OEIFlavor_SDF_FixBondMarks

_oechem.OEIFlavor_SDF_SuppressImp2ExpENHSTE_swigconstant(_oechem)
OEIFlavor_SDF_SuppressImp2ExpENHSTE = _oechem.OEIFlavor_SDF_SuppressImp2ExpENHSTE

_oechem.OEIFlavor_CAN_Default_swigconstant(_oechem)
OEIFlavor_CAN_Default = _oechem.OEIFlavor_CAN_Default

_oechem.OEIFlavor_MF_Default_swigconstant(_oechem)
OEIFlavor_MF_Default = _oechem.OEIFlavor_MF_Default

_oechem.OEIFlavor_CIF_Default_swigconstant(_oechem)
OEIFlavor_CIF_Default = _oechem.OEIFlavor_CIF_Default

_oechem.OEIFlavor_XYZ_FormalCrg_swigconstant(_oechem)
OEIFlavor_XYZ_FormalCrg = _oechem.OEIFlavor_XYZ_FormalCrg

_oechem.OEIFlavor_XYZ_ImplicitH_swigconstant(_oechem)
OEIFlavor_XYZ_ImplicitH = _oechem.OEIFlavor_XYZ_ImplicitH

_oechem.OEIFlavor_XYZ_BondOrder_swigconstant(_oechem)
OEIFlavor_XYZ_BondOrder = _oechem.OEIFlavor_XYZ_BondOrder

_oechem.OEIFlavor_XYZ_Rings_swigconstant(_oechem)
OEIFlavor_XYZ_Rings = _oechem.OEIFlavor_XYZ_Rings

_oechem.OEIFlavor_XYZ_Connect_swigconstant(_oechem)
OEIFlavor_XYZ_Connect = _oechem.OEIFlavor_XYZ_Connect

_oechem.OEIFlavor_XYZ_ExtraMask_swigconstant(_oechem)
OEIFlavor_XYZ_ExtraMask = _oechem.OEIFlavor_XYZ_ExtraMask

_oechem.OEIFlavor_XYZ_Default_swigconstant(_oechem)
OEIFlavor_XYZ_Default = _oechem.OEIFlavor_XYZ_Default

_oechem.OEIFlavor_FASTA_Default_swigconstant(_oechem)
OEIFlavor_FASTA_Default = _oechem.OEIFlavor_FASTA_Default

_oechem.OEIFlavor_FASTA_CustomResidues_swigconstant(_oechem)
OEIFlavor_FASTA_CustomResidues = _oechem.OEIFlavor_FASTA_CustomResidues

_oechem.OEIFlavor_FASTA_EmbeddedSMILES_swigconstant(_oechem)
OEIFlavor_FASTA_EmbeddedSMILES = _oechem.OEIFlavor_FASTA_EmbeddedSMILES

_oechem.OEIFlavor_FASTA_AllMask_swigconstant(_oechem)
OEIFlavor_FASTA_AllMask = _oechem.OEIFlavor_FASTA_AllMask

_oechem.OEIFlavor_MOPAC_Default_swigconstant(_oechem)
OEIFlavor_MOPAC_Default = _oechem.OEIFlavor_MOPAC_Default

_oechem.OEIFlavor_OEB_Default_swigconstant(_oechem)
OEIFlavor_OEB_Default = _oechem.OEIFlavor_OEB_Default

_oechem.OEIFlavor_MMOD_FormalCrg_swigconstant(_oechem)
OEIFlavor_MMOD_FormalCrg = _oechem.OEIFlavor_MMOD_FormalCrg

_oechem.OEIFlavor_MMOD_Default_swigconstant(_oechem)
OEIFlavor_MMOD_Default = _oechem.OEIFlavor_MMOD_Default

_oechem.OEIFlavor_SLN_Default_swigconstant(_oechem)
OEIFlavor_SLN_Default = _oechem.OEIFlavor_SLN_Default

_oechem.OEIFlavor_RDF_Default_swigconstant(_oechem)
OEIFlavor_RDF_Default = _oechem.OEIFlavor_RDF_Default

_oechem.OEIFlavor_RDF_FixBondMarks_swigconstant(_oechem)
OEIFlavor_RDF_FixBondMarks = _oechem.OEIFlavor_RDF_FixBondMarks

_oechem.OEIFlavor_RDF_SuppressImp2ExpENHSTE_swigconstant(_oechem)
OEIFlavor_RDF_SuppressImp2ExpENHSTE = _oechem.OEIFlavor_RDF_SuppressImp2ExpENHSTE

_oechem.OEIFlavor_CDX_SuperAtom_swigconstant(_oechem)
OEIFlavor_CDX_SuperAtom = _oechem.OEIFlavor_CDX_SuperAtom

_oechem.OEIFlavor_CDX_DEFAULT_swigconstant(_oechem)
OEIFlavor_CDX_DEFAULT = _oechem.OEIFlavor_CDX_DEFAULT

OEIFlavor_CDX_Default = OEIFlavor_CDX_DEFAULT


_oechem.OEIFlavor_SKC_Default_swigconstant(_oechem)
OEIFlavor_SKC_Default = _oechem.OEIFlavor_SKC_Default

_oechem.OEIFlavor_INCHI_Default_swigconstant(_oechem)
OEIFlavor_INCHI_Default = _oechem.OEIFlavor_INCHI_Default

_oechem.OEIFlavor_CSV_Header_swigconstant(_oechem)
OEIFlavor_CSV_Header = _oechem.OEIFlavor_CSV_Header

OEIFlavor_CSV_Default = OEIFlavor_CSV_Header


OEIFlavor_CSV_DEFAULT = OEIFlavor_CSV_Default


_oechem.OEIFlavor_JSON_Default_swigconstant(_oechem)
OEIFlavor_JSON_Default = _oechem.OEIFlavor_JSON_Default

_oechem.OEIFlavor_JSONSurface_Default_swigconstant(_oechem)
OEIFlavor_JSONSurface_Default = _oechem.OEIFlavor_JSONSurface_Default

_oechem.OEOFlavor_Generic_OEAroModelDaylight_swigconstant(_oechem)
OEOFlavor_Generic_OEAroModelDaylight = _oechem.OEOFlavor_Generic_OEAroModelDaylight

_oechem.OEOFlavor_Generic_OEAroModelOpenEye_swigconstant(_oechem)
OEOFlavor_Generic_OEAroModelOpenEye = _oechem.OEOFlavor_Generic_OEAroModelOpenEye

_oechem.OEOFlavor_Generic_OEAroModelTripos_swigconstant(_oechem)
OEOFlavor_Generic_OEAroModelTripos = _oechem.OEOFlavor_Generic_OEAroModelTripos

_oechem.OEOFlavor_Generic_OEAroModelMMFF_swigconstant(_oechem)
OEOFlavor_Generic_OEAroModelMMFF = _oechem.OEOFlavor_Generic_OEAroModelMMFF

_oechem.OEOFlavor_Generic_OEAroModelMDL_swigconstant(_oechem)
OEOFlavor_Generic_OEAroModelMDL = _oechem.OEOFlavor_Generic_OEAroModelMDL

_oechem.OEOFlavor_Generic_AroMask_swigconstant(_oechem)
OEOFlavor_Generic_AroMask = _oechem.OEOFlavor_Generic_AroMask

_oechem.OEOFlavor_Generic_Rings_swigconstant(_oechem)
OEOFlavor_Generic_Rings = _oechem.OEOFlavor_Generic_Rings

_oechem.OEOFlavor_Generic_GenericMask_swigconstant(_oechem)
OEOFlavor_Generic_GenericMask = _oechem.OEOFlavor_Generic_GenericMask

_oechem.OEOFlavor_Generic_SpecificMask_swigconstant(_oechem)
OEOFlavor_Generic_SpecificMask = _oechem.OEOFlavor_Generic_SpecificMask

_oechem.OEOFlavor_Generic_DEFAULT_swigconstant(_oechem)
OEOFlavor_Generic_DEFAULT = _oechem.OEOFlavor_Generic_DEFAULT

OEOFlavor_Generic_Default = OEOFlavor_Generic_DEFAULT


_oechem.OEOFlavor_SMI_Isotopes_swigconstant(_oechem)
OEOFlavor_SMI_Isotopes = _oechem.OEOFlavor_SMI_Isotopes

_oechem.OEOFlavor_SMI_Hydrogens_swigconstant(_oechem)
OEOFlavor_SMI_Hydrogens = _oechem.OEOFlavor_SMI_Hydrogens

_oechem.OEOFlavor_SMI_RGroups_swigconstant(_oechem)
OEOFlavor_SMI_RGroups = _oechem.OEOFlavor_SMI_RGroups

_oechem.OEOFlavor_SMI_AtomStereo_swigconstant(_oechem)
OEOFlavor_SMI_AtomStereo = _oechem.OEOFlavor_SMI_AtomStereo

_oechem.OEOFlavor_SMI_BondStereo_swigconstant(_oechem)
OEOFlavor_SMI_BondStereo = _oechem.OEOFlavor_SMI_BondStereo

_oechem.OEOFlavor_SMI_AtomMaps_swigconstant(_oechem)
OEOFlavor_SMI_AtomMaps = _oechem.OEOFlavor_SMI_AtomMaps

_oechem.OEOFlavor_SMI_Canonical_swigconstant(_oechem)
OEOFlavor_SMI_Canonical = _oechem.OEOFlavor_SMI_Canonical

_oechem.OEOFlavor_SMI_Kekule_swigconstant(_oechem)
OEOFlavor_SMI_Kekule = _oechem.OEOFlavor_SMI_Kekule

_oechem.OEOFlavor_SMI_SuperAtoms_swigconstant(_oechem)
OEOFlavor_SMI_SuperAtoms = _oechem.OEOFlavor_SMI_SuperAtoms

_oechem.OEOFlavor_SMI_ExtBonds_swigconstant(_oechem)
OEOFlavor_SMI_ExtBonds = _oechem.OEOFlavor_SMI_ExtBonds

_oechem.OEOFlavor_SMI_ImpHCount_swigconstant(_oechem)
OEOFlavor_SMI_ImpHCount = _oechem.OEOFlavor_SMI_ImpHCount

_oechem.OEOFlavor_SMI_AllBonds_swigconstant(_oechem)
OEOFlavor_SMI_AllBonds = _oechem.OEOFlavor_SMI_AllBonds

_oechem.OEOFlavor_SMI_SmiMask_swigconstant(_oechem)
OEOFlavor_SMI_SmiMask = _oechem.OEOFlavor_SMI_SmiMask

_oechem.OEOFlavor_SMI_DEFAULT_swigconstant(_oechem)
OEOFlavor_SMI_DEFAULT = _oechem.OEOFlavor_SMI_DEFAULT

OEOFlavor_SMI_Default = OEOFlavor_SMI_DEFAULT


_oechem.OEOFlavor_MDL_MCHG_swigconstant(_oechem)
OEOFlavor_MDL_MCHG = _oechem.OEOFlavor_MDL_MCHG

_oechem.OEOFlavor_MDL_MISO_swigconstant(_oechem)
OEOFlavor_MDL_MISO = _oechem.OEOFlavor_MDL_MISO

_oechem.OEOFlavor_MDL_MRGP_swigconstant(_oechem)
OEOFlavor_MDL_MRGP = _oechem.OEOFlavor_MDL_MRGP

_oechem.OEOFlavor_MDL_MV30_swigconstant(_oechem)
OEOFlavor_MDL_MV30 = _oechem.OEOFlavor_MDL_MV30

_oechem.OEOFlavor_MDL_MDLParity_swigconstant(_oechem)
OEOFlavor_MDL_MDLParity = _oechem.OEOFlavor_MDL_MDLParity

_oechem.OEOFlavor_MDL_NoParity_swigconstant(_oechem)
OEOFlavor_MDL_NoParity = _oechem.OEOFlavor_MDL_NoParity

_oechem.OEOFlavor_MDL_CurrentParity_swigconstant(_oechem)
OEOFlavor_MDL_CurrentParity = _oechem.OEOFlavor_MDL_CurrentParity

_oechem.OEOFlavor_MDL_MMask_swigconstant(_oechem)
OEOFlavor_MDL_MMask = _oechem.OEOFlavor_MDL_MMask

_oechem.OEOFlavor_MDL_PMask_swigconstant(_oechem)
OEOFlavor_MDL_PMask = _oechem.OEOFlavor_MDL_PMask

_oechem.OEOFlavor_MDL_Add2D_swigconstant(_oechem)
OEOFlavor_MDL_Add2D = _oechem.OEOFlavor_MDL_Add2D

_oechem.OEOFlavor_MDL_UnsetBad2DStereo_swigconstant(_oechem)
OEOFlavor_MDL_UnsetBad2DStereo = _oechem.OEOFlavor_MDL_UnsetBad2DStereo

_oechem.OEOFlavor_MDL_SuppressImp2ExpENHSTE_swigconstant(_oechem)
OEOFlavor_MDL_SuppressImp2ExpENHSTE = _oechem.OEOFlavor_MDL_SuppressImp2ExpENHSTE

_oechem.OEOFlavor_MDL_DEFAULT_swigconstant(_oechem)
OEOFlavor_MDL_DEFAULT = _oechem.OEOFlavor_MDL_DEFAULT

OEOFlavor_MDL_Default = OEOFlavor_MDL_DEFAULT


_oechem.OEOFlavor_PDB_BONDS_swigconstant(_oechem)
OEOFlavor_PDB_BONDS = _oechem.OEOFlavor_PDB_BONDS

_oechem.OEOFlavor_PDB_ORDERS_swigconstant(_oechem)
OEOFlavor_PDB_ORDERS = _oechem.OEOFlavor_PDB_ORDERS

_oechem.OEOFlavor_PDB_BOTH_swigconstant(_oechem)
OEOFlavor_PDB_BOTH = _oechem.OEOFlavor_PDB_BOTH

_oechem.OEOFlavor_PDB_CHARGE_swigconstant(_oechem)
OEOFlavor_PDB_CHARGE = _oechem.OEOFlavor_PDB_CHARGE

_oechem.OEOFlavor_PDB_RADIUS_swigconstant(_oechem)
OEOFlavor_PDB_RADIUS = _oechem.OEOFlavor_PDB_RADIUS

_oechem.OEOFlavor_PDB_TER_swigconstant(_oechem)
OEOFlavor_PDB_TER = _oechem.OEOFlavor_PDB_TER

_oechem.OEOFlavor_PDB_DELPHI_swigconstant(_oechem)
OEOFlavor_PDB_DELPHI = _oechem.OEOFlavor_PDB_DELPHI

_oechem.OEOFlavor_PDB_ELEMENT_swigconstant(_oechem)
OEOFlavor_PDB_ELEMENT = _oechem.OEOFlavor_PDB_ELEMENT

_oechem.OEOFlavor_PDB_FormalCrg_swigconstant(_oechem)
OEOFlavor_PDB_FormalCrg = _oechem.OEOFlavor_PDB_FormalCrg

_oechem.OEOFlavor_PDB_FORMALCHARGE_swigconstant(_oechem)
OEOFlavor_PDB_FORMALCHARGE = _oechem.OEOFlavor_PDB_FORMALCHARGE

_oechem.OEOFlavor_PDB_HETBONDS_swigconstant(_oechem)
OEOFlavor_PDB_HETBONDS = _oechem.OEOFlavor_PDB_HETBONDS

_oechem.OEOFlavor_PDB_BasicMask_swigconstant(_oechem)
OEOFlavor_PDB_BasicMask = _oechem.OEOFlavor_PDB_BasicMask

_oechem.OEOFlavor_PDB_OEResidues_swigconstant(_oechem)
OEOFlavor_PDB_OEResidues = _oechem.OEOFlavor_PDB_OEResidues

_oechem.OEOFlavor_PDB_NoResidues_swigconstant(_oechem)
OEOFlavor_PDB_NoResidues = _oechem.OEOFlavor_PDB_NoResidues

_oechem.OEOFlavor_PDB_CurrentResidues_swigconstant(_oechem)
OEOFlavor_PDB_CurrentResidues = _oechem.OEOFlavor_PDB_CurrentResidues

_oechem.OEOFlavor_PDB_OrderAtoms_swigconstant(_oechem)
OEOFlavor_PDB_OrderAtoms = _oechem.OEOFlavor_PDB_OrderAtoms

_oechem.OEOFlavor_PDB_AllMask_swigconstant(_oechem)
OEOFlavor_PDB_AllMask = _oechem.OEOFlavor_PDB_AllMask

_oechem.OEOFlavor_PDB_DEFAULT_swigconstant(_oechem)
OEOFlavor_PDB_DEFAULT = _oechem.OEOFlavor_PDB_DEFAULT

OEOFlavor_PDB_Default = OEOFlavor_PDB_DEFAULT


_oechem.OEOFlavor_MOL2_AtomTypeNames_swigconstant(_oechem)
OEOFlavor_MOL2_AtomTypeNames = _oechem.OEOFlavor_MOL2_AtomTypeNames

_oechem.OEOFlavor_MOL2_BondTypeNames_swigconstant(_oechem)
OEOFlavor_MOL2_BondTypeNames = _oechem.OEOFlavor_MOL2_BondTypeNames

_oechem.OEOFlavor_MOL2_AtomNames_swigconstant(_oechem)
OEOFlavor_MOL2_AtomNames = _oechem.OEOFlavor_MOL2_AtomNames

_oechem.OEOFlavor_MOL2_OrderAtoms_swigconstant(_oechem)
OEOFlavor_MOL2_OrderAtoms = _oechem.OEOFlavor_MOL2_OrderAtoms

_oechem.OEOFlavor_MOL2_Hydrogens_swigconstant(_oechem)
OEOFlavor_MOL2_Hydrogens = _oechem.OEOFlavor_MOL2_Hydrogens

_oechem.OEOFlavor_MOL2_Substructure_swigconstant(_oechem)
OEOFlavor_MOL2_Substructure = _oechem.OEOFlavor_MOL2_Substructure

_oechem.OEOFlavor_MOL2_ChargePrecision_swigconstant(_oechem)
OEOFlavor_MOL2_ChargePrecision = _oechem.OEOFlavor_MOL2_ChargePrecision

_oechem.OEOFlavor_MOL2_GeneralFFFormat_swigconstant(_oechem)
OEOFlavor_MOL2_GeneralFFFormat = _oechem.OEOFlavor_MOL2_GeneralFFFormat

_oechem.OEOFlavor_MOL2_Forcefield_swigconstant(_oechem)
OEOFlavor_MOL2_Forcefield = _oechem.OEOFlavor_MOL2_Forcefield

_oechem.OEOFlavor_MOL2_NameMask_swigconstant(_oechem)
OEOFlavor_MOL2_NameMask = _oechem.OEOFlavor_MOL2_NameMask

_oechem.OEOFlavor_MOL2_AllMask_swigconstant(_oechem)
OEOFlavor_MOL2_AllMask = _oechem.OEOFlavor_MOL2_AllMask

_oechem.OEOFlavor_MOL2_DEFAULT_swigconstant(_oechem)
OEOFlavor_MOL2_DEFAULT = _oechem.OEOFlavor_MOL2_DEFAULT

OEOFlavor_MOL2_Default = OEOFlavor_MOL2_DEFAULT


_oechem.OEOFlavor_BIN_Default_swigconstant(_oechem)
OEOFlavor_BIN_Default = _oechem.OEOFlavor_BIN_Default

_oechem.OEOFlavor_USM_Isotopes_swigconstant(_oechem)
OEOFlavor_USM_Isotopes = _oechem.OEOFlavor_USM_Isotopes

_oechem.OEOFlavor_USM_Hydrogens_swigconstant(_oechem)
OEOFlavor_USM_Hydrogens = _oechem.OEOFlavor_USM_Hydrogens

_oechem.OEOFlavor_USM_RGroups_swigconstant(_oechem)
OEOFlavor_USM_RGroups = _oechem.OEOFlavor_USM_RGroups

_oechem.OEOFlavor_USM_AtomStereo_swigconstant(_oechem)
OEOFlavor_USM_AtomStereo = _oechem.OEOFlavor_USM_AtomStereo

_oechem.OEOFlavor_USM_BondStereo_swigconstant(_oechem)
OEOFlavor_USM_BondStereo = _oechem.OEOFlavor_USM_BondStereo

_oechem.OEOFlavor_USM_AtomMaps_swigconstant(_oechem)
OEOFlavor_USM_AtomMaps = _oechem.OEOFlavor_USM_AtomMaps

_oechem.OEOFlavor_USM_Canonical_swigconstant(_oechem)
OEOFlavor_USM_Canonical = _oechem.OEOFlavor_USM_Canonical

_oechem.OEOFlavor_USM_Kekule_swigconstant(_oechem)
OEOFlavor_USM_Kekule = _oechem.OEOFlavor_USM_Kekule

_oechem.OEOFlavor_USM_SuperAtoms_swigconstant(_oechem)
OEOFlavor_USM_SuperAtoms = _oechem.OEOFlavor_USM_SuperAtoms

_oechem.OEOFlavor_USM_ExtBonds_swigconstant(_oechem)
OEOFlavor_USM_ExtBonds = _oechem.OEOFlavor_USM_ExtBonds

_oechem.OEOFlavor_USM_ImpHCount_swigconstant(_oechem)
OEOFlavor_USM_ImpHCount = _oechem.OEOFlavor_USM_ImpHCount

_oechem.OEOFlavor_USM_AllBonds_swigconstant(_oechem)
OEOFlavor_USM_AllBonds = _oechem.OEOFlavor_USM_AllBonds

_oechem.OEOFlavor_USM_SmiMask_swigconstant(_oechem)
OEOFlavor_USM_SmiMask = _oechem.OEOFlavor_USM_SmiMask

_oechem.OEOFlavor_USM_DEFAULT_swigconstant(_oechem)
OEOFlavor_USM_DEFAULT = _oechem.OEOFlavor_USM_DEFAULT

OEOFlavor_USM_Default = OEOFlavor_USM_DEFAULT


_oechem.OEOFlavor_ISM_Isotopes_swigconstant(_oechem)
OEOFlavor_ISM_Isotopes = _oechem.OEOFlavor_ISM_Isotopes

_oechem.OEOFlavor_ISM_Hydrogens_swigconstant(_oechem)
OEOFlavor_ISM_Hydrogens = _oechem.OEOFlavor_ISM_Hydrogens

_oechem.OEOFlavor_ISM_RGroups_swigconstant(_oechem)
OEOFlavor_ISM_RGroups = _oechem.OEOFlavor_ISM_RGroups

_oechem.OEOFlavor_ISM_AtomStereo_swigconstant(_oechem)
OEOFlavor_ISM_AtomStereo = _oechem.OEOFlavor_ISM_AtomStereo

_oechem.OEOFlavor_ISM_BondStereo_swigconstant(_oechem)
OEOFlavor_ISM_BondStereo = _oechem.OEOFlavor_ISM_BondStereo

_oechem.OEOFlavor_ISM_AtomMaps_swigconstant(_oechem)
OEOFlavor_ISM_AtomMaps = _oechem.OEOFlavor_ISM_AtomMaps

_oechem.OEOFlavor_ISM_Canonical_swigconstant(_oechem)
OEOFlavor_ISM_Canonical = _oechem.OEOFlavor_ISM_Canonical

_oechem.OEOFlavor_ISM_Kekule_swigconstant(_oechem)
OEOFlavor_ISM_Kekule = _oechem.OEOFlavor_ISM_Kekule

_oechem.OEOFlavor_ISM_SuperAtoms_swigconstant(_oechem)
OEOFlavor_ISM_SuperAtoms = _oechem.OEOFlavor_ISM_SuperAtoms

_oechem.OEOFlavor_ISM_ExtBonds_swigconstant(_oechem)
OEOFlavor_ISM_ExtBonds = _oechem.OEOFlavor_ISM_ExtBonds

_oechem.OEOFlavor_ISM_ImpHCount_swigconstant(_oechem)
OEOFlavor_ISM_ImpHCount = _oechem.OEOFlavor_ISM_ImpHCount

_oechem.OEOFlavor_ISM_AllBonds_swigconstant(_oechem)
OEOFlavor_ISM_AllBonds = _oechem.OEOFlavor_ISM_AllBonds

_oechem.OEOFlavor_ISM_SmiMask_swigconstant(_oechem)
OEOFlavor_ISM_SmiMask = _oechem.OEOFlavor_ISM_SmiMask

_oechem.OEOFlavor_ISM_DEFAULT_swigconstant(_oechem)
OEOFlavor_ISM_DEFAULT = _oechem.OEOFlavor_ISM_DEFAULT

OEOFlavor_ISM_Default = OEOFlavor_ISM_DEFAULT


_oechem.OEOFlavor_MOL2H_AtomTypeNames_swigconstant(_oechem)
OEOFlavor_MOL2H_AtomTypeNames = _oechem.OEOFlavor_MOL2H_AtomTypeNames

_oechem.OEOFlavor_MOL2H_BondTypeNames_swigconstant(_oechem)
OEOFlavor_MOL2H_BondTypeNames = _oechem.OEOFlavor_MOL2H_BondTypeNames

_oechem.OEOFlavor_MOL2H_AtomNames_swigconstant(_oechem)
OEOFlavor_MOL2H_AtomNames = _oechem.OEOFlavor_MOL2H_AtomNames

_oechem.OEOFlavor_MOL2H_OrderAtoms_swigconstant(_oechem)
OEOFlavor_MOL2H_OrderAtoms = _oechem.OEOFlavor_MOL2H_OrderAtoms

_oechem.OEOFlavor_MOL2H_Hydrogens_swigconstant(_oechem)
OEOFlavor_MOL2H_Hydrogens = _oechem.OEOFlavor_MOL2H_Hydrogens

_oechem.OEOFlavor_MOL2H_Substructure_swigconstant(_oechem)
OEOFlavor_MOL2H_Substructure = _oechem.OEOFlavor_MOL2H_Substructure

_oechem.OEOFlavor_MOL2H_NameMask_swigconstant(_oechem)
OEOFlavor_MOL2H_NameMask = _oechem.OEOFlavor_MOL2H_NameMask

_oechem.OEOFlavor_MOL2H_AllMask_swigconstant(_oechem)
OEOFlavor_MOL2H_AllMask = _oechem.OEOFlavor_MOL2H_AllMask

_oechem.OEOFlavor_MOL2H_DEFAULT_swigconstant(_oechem)
OEOFlavor_MOL2H_DEFAULT = _oechem.OEOFlavor_MOL2H_DEFAULT

OEOFlavor_MOL2H_Default = OEOFlavor_MOL2H_DEFAULT


_oechem.OEOFlavor_SDF_MCHG_swigconstant(_oechem)
OEOFlavor_SDF_MCHG = _oechem.OEOFlavor_SDF_MCHG

_oechem.OEOFlavor_SDF_MISO_swigconstant(_oechem)
OEOFlavor_SDF_MISO = _oechem.OEOFlavor_SDF_MISO

_oechem.OEOFlavor_SDF_MRGP_swigconstant(_oechem)
OEOFlavor_SDF_MRGP = _oechem.OEOFlavor_SDF_MRGP

_oechem.OEOFlavor_SDF_MV30_swigconstant(_oechem)
OEOFlavor_SDF_MV30 = _oechem.OEOFlavor_SDF_MV30

_oechem.OEOFlavor_SDF_MDLParity_swigconstant(_oechem)
OEOFlavor_SDF_MDLParity = _oechem.OEOFlavor_SDF_MDLParity

_oechem.OEOFlavor_SDF_NoParity_swigconstant(_oechem)
OEOFlavor_SDF_NoParity = _oechem.OEOFlavor_SDF_NoParity

_oechem.OEOFlavor_SDF_CurrentParity_swigconstant(_oechem)
OEOFlavor_SDF_CurrentParity = _oechem.OEOFlavor_SDF_CurrentParity

_oechem.OEOFlavor_SDF_MMask_swigconstant(_oechem)
OEOFlavor_SDF_MMask = _oechem.OEOFlavor_SDF_MMask

_oechem.OEOFlavor_SDF_PMask_swigconstant(_oechem)
OEOFlavor_SDF_PMask = _oechem.OEOFlavor_SDF_PMask

_oechem.OEOFlavor_SDF_Add2D_swigconstant(_oechem)
OEOFlavor_SDF_Add2D = _oechem.OEOFlavor_SDF_Add2D

_oechem.OEOFlavor_SDF_UnsetBad2DStereo_swigconstant(_oechem)
OEOFlavor_SDF_UnsetBad2DStereo = _oechem.OEOFlavor_SDF_UnsetBad2DStereo

_oechem.OEOFlavor_SDF_SuppressImp2ExpENHSTE_swigconstant(_oechem)
OEOFlavor_SDF_SuppressImp2ExpENHSTE = _oechem.OEOFlavor_SDF_SuppressImp2ExpENHSTE

_oechem.OEOFlavor_SDF_DEFAULT_swigconstant(_oechem)
OEOFlavor_SDF_DEFAULT = _oechem.OEOFlavor_SDF_DEFAULT

OEOFlavor_SDF_Default = OEOFlavor_SDF_DEFAULT


_oechem.OEOFlavor_CAN_Isotopes_swigconstant(_oechem)
OEOFlavor_CAN_Isotopes = _oechem.OEOFlavor_CAN_Isotopes

_oechem.OEOFlavor_CAN_Hydrogens_swigconstant(_oechem)
OEOFlavor_CAN_Hydrogens = _oechem.OEOFlavor_CAN_Hydrogens

_oechem.OEOFlavor_CAN_RGroups_swigconstant(_oechem)
OEOFlavor_CAN_RGroups = _oechem.OEOFlavor_CAN_RGroups

_oechem.OEOFlavor_CAN_AtomStereo_swigconstant(_oechem)
OEOFlavor_CAN_AtomStereo = _oechem.OEOFlavor_CAN_AtomStereo

_oechem.OEOFlavor_CAN_BondStereo_swigconstant(_oechem)
OEOFlavor_CAN_BondStereo = _oechem.OEOFlavor_CAN_BondStereo

_oechem.OEOFlavor_CAN_AtomMaps_swigconstant(_oechem)
OEOFlavor_CAN_AtomMaps = _oechem.OEOFlavor_CAN_AtomMaps

_oechem.OEOFlavor_CAN_Canonical_swigconstant(_oechem)
OEOFlavor_CAN_Canonical = _oechem.OEOFlavor_CAN_Canonical

_oechem.OEOFlavor_CAN_Kekule_swigconstant(_oechem)
OEOFlavor_CAN_Kekule = _oechem.OEOFlavor_CAN_Kekule

_oechem.OEOFlavor_CAN_SuperAtoms_swigconstant(_oechem)
OEOFlavor_CAN_SuperAtoms = _oechem.OEOFlavor_CAN_SuperAtoms

_oechem.OEOFlavor_CAN_ExtBonds_swigconstant(_oechem)
OEOFlavor_CAN_ExtBonds = _oechem.OEOFlavor_CAN_ExtBonds

_oechem.OEOFlavor_CAN_ImpHCount_swigconstant(_oechem)
OEOFlavor_CAN_ImpHCount = _oechem.OEOFlavor_CAN_ImpHCount

_oechem.OEOFlavor_CAN_AllBonds_swigconstant(_oechem)
OEOFlavor_CAN_AllBonds = _oechem.OEOFlavor_CAN_AllBonds

_oechem.OEOFlavor_CAN_SmiMask_swigconstant(_oechem)
OEOFlavor_CAN_SmiMask = _oechem.OEOFlavor_CAN_SmiMask

_oechem.OEOFlavor_CAN_DEFAULT_swigconstant(_oechem)
OEOFlavor_CAN_DEFAULT = _oechem.OEOFlavor_CAN_DEFAULT

OEOFlavor_CAN_Default = OEOFlavor_CAN_DEFAULT


_oechem.OEOFlavor_MF_Title_swigconstant(_oechem)
OEOFlavor_MF_Title = _oechem.OEOFlavor_MF_Title

_oechem.OEOFlavor_MF_DEFAULT_swigconstant(_oechem)
OEOFlavor_MF_DEFAULT = _oechem.OEOFlavor_MF_DEFAULT

OEOFlavor_MF_Default = OEOFlavor_MF_DEFAULT


_oechem.OEOFlavor_XYZ_Charges_swigconstant(_oechem)
OEOFlavor_XYZ_Charges = _oechem.OEOFlavor_XYZ_Charges

_oechem.OEOFlavor_XYZ_Symbols_swigconstant(_oechem)
OEOFlavor_XYZ_Symbols = _oechem.OEOFlavor_XYZ_Symbols

_oechem.OEOFlavor_XYZ_SinglePrecision_swigconstant(_oechem)
OEOFlavor_XYZ_SinglePrecision = _oechem.OEOFlavor_XYZ_SinglePrecision

_oechem.OEOFlavor_XYZ_DoublePrecision_swigconstant(_oechem)
OEOFlavor_XYZ_DoublePrecision = _oechem.OEOFlavor_XYZ_DoublePrecision

OEOFlavor_XYZ_Default = OEOFlavor_XYZ_Charges|OEOFlavor_XYZ_Symbols


OEOFlavor_XYZ_AllMask = OEOFlavor_XYZ_Charges|OEOFlavor_XYZ_Symbols|OEOFlavor_XYZ_SinglePrecision|OEOFlavor_XYZ_DoublePrecision


_oechem.OEOFlavor_FASTA_Default_swigconstant(_oechem)
OEOFlavor_FASTA_Default = _oechem.OEOFlavor_FASTA_Default

_oechem.OEOFlavor_MOPAC_XYZ_swigconstant(_oechem)
OEOFlavor_MOPAC_XYZ = _oechem.OEOFlavor_MOPAC_XYZ

_oechem.OEOFlavor_MOPAC_CHARGES_swigconstant(_oechem)
OEOFlavor_MOPAC_CHARGES = _oechem.OEOFlavor_MOPAC_CHARGES

_oechem.OEOFlavor_MOPAC_AllMask_swigconstant(_oechem)
OEOFlavor_MOPAC_AllMask = _oechem.OEOFlavor_MOPAC_AllMask

_oechem.OEOFlavor_MOPAC_DEFAULT_swigconstant(_oechem)
OEOFlavor_MOPAC_DEFAULT = _oechem.OEOFlavor_MOPAC_DEFAULT

OEOFlavor_MOPAC_Default = OEOFlavor_MOPAC_DEFAULT


_oechem.OEOFlavor_OEB_Default_swigconstant(_oechem)
OEOFlavor_OEB_Default = _oechem.OEOFlavor_OEB_Default

_oechem.OEOFlavor_MMOD_AtomTypes_swigconstant(_oechem)
OEOFlavor_MMOD_AtomTypes = _oechem.OEOFlavor_MMOD_AtomTypes

_oechem.OEOFlavor_MMOD_DEFAULT_swigconstant(_oechem)
OEOFlavor_MMOD_DEFAULT = _oechem.OEOFlavor_MMOD_DEFAULT

OEOFlavor_MMOD_Default = OEOFlavor_MMOD_DEFAULT


_oechem.OEOFlavor_SLN_Default_swigconstant(_oechem)
OEOFlavor_SLN_Default = _oechem.OEOFlavor_SLN_Default

_oechem.OEOFlavor_RDF_MCHG_swigconstant(_oechem)
OEOFlavor_RDF_MCHG = _oechem.OEOFlavor_RDF_MCHG

_oechem.OEOFlavor_RDF_MISO_swigconstant(_oechem)
OEOFlavor_RDF_MISO = _oechem.OEOFlavor_RDF_MISO

_oechem.OEOFlavor_RDF_MRGP_swigconstant(_oechem)
OEOFlavor_RDF_MRGP = _oechem.OEOFlavor_RDF_MRGP

_oechem.OEOFlavor_RDF_MV30_swigconstant(_oechem)
OEOFlavor_RDF_MV30 = _oechem.OEOFlavor_RDF_MV30

_oechem.OEOFlavor_RDF_MDLParity_swigconstant(_oechem)
OEOFlavor_RDF_MDLParity = _oechem.OEOFlavor_RDF_MDLParity

_oechem.OEOFlavor_RDF_NoParity_swigconstant(_oechem)
OEOFlavor_RDF_NoParity = _oechem.OEOFlavor_RDF_NoParity

_oechem.OEOFlavor_RDF_CurrentParity_swigconstant(_oechem)
OEOFlavor_RDF_CurrentParity = _oechem.OEOFlavor_RDF_CurrentParity

_oechem.OEOFlavor_RDF_MMask_swigconstant(_oechem)
OEOFlavor_RDF_MMask = _oechem.OEOFlavor_RDF_MMask

_oechem.OEOFlavor_RDF_PMask_swigconstant(_oechem)
OEOFlavor_RDF_PMask = _oechem.OEOFlavor_RDF_PMask

_oechem.OEOFlavor_RDF_SuppressImp2ExpENHSTE_swigconstant(_oechem)
OEOFlavor_RDF_SuppressImp2ExpENHSTE = _oechem.OEOFlavor_RDF_SuppressImp2ExpENHSTE

_oechem.OEOFlavor_RDF_DEFAULT_swigconstant(_oechem)
OEOFlavor_RDF_DEFAULT = _oechem.OEOFlavor_RDF_DEFAULT

OEOFlavor_RDF_Default = OEOFlavor_RDF_DEFAULT


_oechem.OEOFlavor_CDX_Add2D_swigconstant(_oechem)
OEOFlavor_CDX_Add2D = _oechem.OEOFlavor_CDX_Add2D

_oechem.OEOFlavor_CDX_UnsetBad2DStereo_swigconstant(_oechem)
OEOFlavor_CDX_UnsetBad2DStereo = _oechem.OEOFlavor_CDX_UnsetBad2DStereo

_oechem.OEOFlavor_CDX_Default_swigconstant(_oechem)
OEOFlavor_CDX_Default = _oechem.OEOFlavor_CDX_Default

_oechem.OEOFlavor_SKC_Default_swigconstant(_oechem)
OEOFlavor_SKC_Default = _oechem.OEOFlavor_SKC_Default

_oechem.OEOFlavor_INCHI_Hydrogens_swigconstant(_oechem)
OEOFlavor_INCHI_Hydrogens = _oechem.OEOFlavor_INCHI_Hydrogens

_oechem.OEOFlavor_INCHI_Stereo_swigconstant(_oechem)
OEOFlavor_INCHI_Stereo = _oechem.OEOFlavor_INCHI_Stereo

_oechem.OEOFlavor_INCHI_Chiral_swigconstant(_oechem)
OEOFlavor_INCHI_Chiral = _oechem.OEOFlavor_INCHI_Chiral

_oechem.OEOFlavor_INCHI_FixedHLayer_swigconstant(_oechem)
OEOFlavor_INCHI_FixedHLayer = _oechem.OEOFlavor_INCHI_FixedHLayer

_oechem.OEOFlavor_INCHI_ReconnectedMetals_swigconstant(_oechem)
OEOFlavor_INCHI_ReconnectedMetals = _oechem.OEOFlavor_INCHI_ReconnectedMetals

_oechem.OEOFlavor_INCHI_RelativeStereo_swigconstant(_oechem)
OEOFlavor_INCHI_RelativeStereo = _oechem.OEOFlavor_INCHI_RelativeStereo

_oechem.OEOFlavor_INCHI_RacemicStereo_swigconstant(_oechem)
OEOFlavor_INCHI_RacemicStereo = _oechem.OEOFlavor_INCHI_RacemicStereo

_oechem.OEOFlavor_INCHI_Title_swigconstant(_oechem)
OEOFlavor_INCHI_Title = _oechem.OEOFlavor_INCHI_Title

OEOFlavor_INCHI_Default = OEOFlavor_INCHI_Stereo|OEOFlavor_INCHI_Title


_oechem.OEOFlavor_INCHI_INCHIMask_swigconstant(_oechem)
OEOFlavor_INCHI_INCHIMask = _oechem.OEOFlavor_INCHI_INCHIMask

_oechem.OEOFlavor_INCHIKEY_Hydrogens_swigconstant(_oechem)
OEOFlavor_INCHIKEY_Hydrogens = _oechem.OEOFlavor_INCHIKEY_Hydrogens

_oechem.OEOFlavor_INCHIKEY_Stereo_swigconstant(_oechem)
OEOFlavor_INCHIKEY_Stereo = _oechem.OEOFlavor_INCHIKEY_Stereo

_oechem.OEOFlavor_INCHIKEY_Chiral_swigconstant(_oechem)
OEOFlavor_INCHIKEY_Chiral = _oechem.OEOFlavor_INCHIKEY_Chiral

_oechem.OEOFlavor_INCHIKEY_FixedHLayer_swigconstant(_oechem)
OEOFlavor_INCHIKEY_FixedHLayer = _oechem.OEOFlavor_INCHIKEY_FixedHLayer

_oechem.OEOFlavor_INCHIKEY_ReconnectedMetals_swigconstant(_oechem)
OEOFlavor_INCHIKEY_ReconnectedMetals = _oechem.OEOFlavor_INCHIKEY_ReconnectedMetals

_oechem.OEOFlavor_INCHIKEY_RelativeStereo_swigconstant(_oechem)
OEOFlavor_INCHIKEY_RelativeStereo = _oechem.OEOFlavor_INCHIKEY_RelativeStereo

_oechem.OEOFlavor_INCHIKEY_RacemicStereo_swigconstant(_oechem)
OEOFlavor_INCHIKEY_RacemicStereo = _oechem.OEOFlavor_INCHIKEY_RacemicStereo

_oechem.OEOFlavor_INCHIKEY_Title_swigconstant(_oechem)
OEOFlavor_INCHIKEY_Title = _oechem.OEOFlavor_INCHIKEY_Title

OEOFlavor_INCHIKEY_Default = OEOFlavor_INCHIKEY_Stereo|OEOFlavor_INCHIKEY_Title


_oechem.OEOFlavor_INCHIKEY_INCHIKEYMask_swigconstant(_oechem)
OEOFlavor_INCHIKEY_INCHIKEYMask = _oechem.OEOFlavor_INCHIKEY_INCHIKEYMask

_oechem.OEOFlavor_CSV_Header_swigconstant(_oechem)
OEOFlavor_CSV_Header = _oechem.OEOFlavor_CSV_Header

OEOFlavor_CSV_Default = OEOFlavor_CSV_Header


OEOFlavor_CSV_DEFAULT = OEOFlavor_CSV_Default


_oechem.OEOFlavor_JSON_Structure_swigconstant(_oechem)
OEOFlavor_JSON_Structure = _oechem.OEOFlavor_JSON_Structure

_oechem.OEOFlavor_JSON_Coords_swigconstant(_oechem)
OEOFlavor_JSON_Coords = _oechem.OEOFlavor_JSON_Coords

_oechem.OEOFlavor_JSON_Residues_swigconstant(_oechem)
OEOFlavor_JSON_Residues = _oechem.OEOFlavor_JSON_Residues

_oechem.OEOFlavor_JSON_PartialCharges_swigconstant(_oechem)
OEOFlavor_JSON_PartialCharges = _oechem.OEOFlavor_JSON_PartialCharges

_oechem.OEOFlavor_JSON_AtomNames_swigconstant(_oechem)
OEOFlavor_JSON_AtomNames = _oechem.OEOFlavor_JSON_AtomNames

_oechem.OEOFlavor_JSON_Styles_swigconstant(_oechem)
OEOFlavor_JSON_Styles = _oechem.OEOFlavor_JSON_Styles

_oechem.OEOFlavor_JSON_Interactions_swigconstant(_oechem)
OEOFlavor_JSON_Interactions = _oechem.OEOFlavor_JSON_Interactions

_oechem.OEOFlavor_JSON_RGroups_swigconstant(_oechem)
OEOFlavor_JSON_RGroups = _oechem.OEOFlavor_JSON_RGroups

_oechem.OEOFlavor_JSON_SDData_swigconstant(_oechem)
OEOFlavor_JSON_SDData = _oechem.OEOFlavor_JSON_SDData

_oechem.OEOFlavor_JSON_UserData_swigconstant(_oechem)
OEOFlavor_JSON_UserData = _oechem.OEOFlavor_JSON_UserData

_oechem.OEOFlavor_JSON_Smiles_swigconstant(_oechem)
OEOFlavor_JSON_Smiles = _oechem.OEOFlavor_JSON_Smiles

_oechem.OEOFlavor_JSON_EscapeData_swigconstant(_oechem)
OEOFlavor_JSON_EscapeData = _oechem.OEOFlavor_JSON_EscapeData

_oechem.OEOFlavor_JSON_Packed_swigconstant(_oechem)
OEOFlavor_JSON_Packed = _oechem.OEOFlavor_JSON_Packed

_oechem.OEOFlavor_JSON_Normals_swigconstant(_oechem)
OEOFlavor_JSON_Normals = _oechem.OEOFlavor_JSON_Normals

OEOFlavor_JSON_Default = OEOFlavor_JSON_Structure|OEOFlavor_JSON_Coords|OEOFlavor_JSON_RGroups|OEOFlavor_JSON_SDData|OEOFlavor_JSON_UserData|OEOFlavor_JSON_Residues|OEOFlavor_JSON_AtomNames


OEOFlavor_JSON_All = OEOFlavor_JSON_Structure|OEOFlavor_JSON_Coords|OEOFlavor_JSON_Residues|OEOFlavor_JSON_PartialCharges|OEOFlavor_JSON_AtomNames|OEOFlavor_JSON_Styles|OEOFlavor_JSON_Interactions|OEOFlavor_JSON_RGroups|OEOFlavor_JSON_SDData|OEOFlavor_JSON_UserData|OEOFlavor_JSON_Smiles|OEOFlavor_JSON_Packed


_oechem.OEOFlavor_JSONSurface_UserData_swigconstant(_oechem)
OEOFlavor_JSONSurface_UserData = _oechem.OEOFlavor_JSONSurface_UserData

_oechem.OEOFlavor_JSONSurface_EscapeData_swigconstant(_oechem)
OEOFlavor_JSONSurface_EscapeData = _oechem.OEOFlavor_JSONSurface_EscapeData

_oechem.OEOFlavor_JSONSurface_Packed_swigconstant(_oechem)
OEOFlavor_JSONSurface_Packed = _oechem.OEOFlavor_JSONSurface_Packed

_oechem.OEOFlavor_JSONSurface_Normals_swigconstant(_oechem)
OEOFlavor_JSONSurface_Normals = _oechem.OEOFlavor_JSONSurface_Normals

OEOFlavor_JSONSurface_Default = OEOFlavor_JSONSurface_UserData


OEOFlavor_JSONSurface_All = OEOFlavor_JSONSurface_UserData|OEOFlavor_JSONSurface_Packed|OEOFlavor_JSONSurface_Normals


OEWriteMolReturnCode_EndOfFile = 8


OEWriteMolReturnCode_IncorrectSize = 4


OEWriteMolReturnCode_ReadTagFailed = 6


OEWriteMolReturnCode_IncorrectHandlerType = 11


OEWriteMolReturnCode_TypeCheckFailed = 10


OEWriteMolReturnCode_StreamFailed = 3


OEWriteMolReturnCode_Continue = 5


OEWriteMolReturnCode_CorruptHeader = 7


OEWriteMolReturnCode_CheckFailed = 2


OEWriteMolReturnCode_NoParentClass = 1


OEWriteMolReturnCode_ReadLengthFailed = 9


OEWriteMolReturnCode_Success = 0


_oechem.OEWriteMolReturnCode_TooManyAtoms_swigconstant(_oechem)
OEWriteMolReturnCode_TooManyAtoms = _oechem.OEWriteMolReturnCode_TooManyAtoms

_oechem.OEWriteMolReturnCode_OEBWriteFailure_swigconstant(_oechem)
OEWriteMolReturnCode_OEBWriteFailure = _oechem.OEWriteMolReturnCode_OEBWriteFailure

_oechem.OEWriteMolReturnCode_FormatNotWritable_swigconstant(_oechem)
OEWriteMolReturnCode_FormatNotWritable = _oechem.OEWriteMolReturnCode_FormatNotWritable

_oechem.OEWriteMolReturnCode_NoConformer_swigconstant(_oechem)
OEWriteMolReturnCode_NoConformer = _oechem.OEWriteMolReturnCode_NoConformer

_oechem.OEMDLOFlag_MCHG_swigconstant(_oechem)
OEMDLOFlag_MCHG = _oechem.OEMDLOFlag_MCHG

_oechem.OEMDLOFlag_MISO_swigconstant(_oechem)
OEMDLOFlag_MISO = _oechem.OEMDLOFlag_MISO

_oechem.OEMDLOFlag_MRGP_swigconstant(_oechem)
OEMDLOFlag_MRGP = _oechem.OEMDLOFlag_MRGP

_oechem.OEMDLOFlag_MV30_swigconstant(_oechem)
OEMDLOFlag_MV30 = _oechem.OEMDLOFlag_MV30

_oechem.OEMDLOFlag_DEFAULT_swigconstant(_oechem)
OEMDLOFlag_DEFAULT = _oechem.OEMDLOFlag_DEFAULT

_oechem.OEPDBIFlag_TER_swigconstant(_oechem)
OEPDBIFlag_TER = _oechem.OEPDBIFlag_TER

_oechem.OEPDBIFlag_END_swigconstant(_oechem)
OEPDBIFlag_END = _oechem.OEPDBIFlag_END

_oechem.OEPDBIFlag_ENDM_swigconstant(_oechem)
OEPDBIFlag_ENDM = _oechem.OEPDBIFlag_ENDM

_oechem.OEPDBIFlag_ALL_swigconstant(_oechem)
OEPDBIFlag_ALL = _oechem.OEPDBIFlag_ALL

_oechem.OEPDBIFlag_DATA_swigconstant(_oechem)
OEPDBIFlag_DATA = _oechem.OEPDBIFlag_DATA

_oechem.OEPDBIFlag_CHARGE_swigconstant(_oechem)
OEPDBIFlag_CHARGE = _oechem.OEPDBIFlag_CHARGE

_oechem.OEPDBIFlag_RADIUS_swigconstant(_oechem)
OEPDBIFlag_RADIUS = _oechem.OEPDBIFlag_RADIUS

_oechem.OEPDBIFlag_DELPHI_swigconstant(_oechem)
OEPDBIFlag_DELPHI = _oechem.OEPDBIFlag_DELPHI

_oechem.OEPDBIFlag_DEFAULT_swigconstant(_oechem)
OEPDBIFlag_DEFAULT = _oechem.OEPDBIFlag_DEFAULT

_oechem.OEPDBOFlag_BONDS_swigconstant(_oechem)
OEPDBOFlag_BONDS = _oechem.OEPDBOFlag_BONDS

_oechem.OEPDBOFlag_ORDERS_swigconstant(_oechem)
OEPDBOFlag_ORDERS = _oechem.OEPDBOFlag_ORDERS

_oechem.OEPDBOFlag_BOTH_swigconstant(_oechem)
OEPDBOFlag_BOTH = _oechem.OEPDBOFlag_BOTH

_oechem.OEPDBOFlag_CHARGE_swigconstant(_oechem)
OEPDBOFlag_CHARGE = _oechem.OEPDBOFlag_CHARGE

_oechem.OEPDBOFlag_RADIUS_swigconstant(_oechem)
OEPDBOFlag_RADIUS = _oechem.OEPDBOFlag_RADIUS

_oechem.OEPDBOFlag_TER_swigconstant(_oechem)
OEPDBOFlag_TER = _oechem.OEPDBOFlag_TER

_oechem.OEPDBOFlag_ELEMENT_swigconstant(_oechem)
OEPDBOFlag_ELEMENT = _oechem.OEPDBOFlag_ELEMENT

_oechem.OEPDBOFlag_FORMALCHARGE_swigconstant(_oechem)
OEPDBOFlag_FORMALCHARGE = _oechem.OEPDBOFlag_FORMALCHARGE

_oechem.OEPDBOFlag_HETBONDS_swigconstant(_oechem)
OEPDBOFlag_HETBONDS = _oechem.OEPDBOFlag_HETBONDS

_oechem.OEPDBOFlag_DELPHI_swigconstant(_oechem)
OEPDBOFlag_DELPHI = _oechem.OEPDBOFlag_DELPHI

_oechem.OEPDBOFlag_DEFAULT_swigconstant(_oechem)
OEPDBOFlag_DEFAULT = _oechem.OEPDBOFlag_DEFAULT

_oechem.OEMOPACOFlag_XYZ_swigconstant(_oechem)
OEMOPACOFlag_XYZ = _oechem.OEMOPACOFlag_XYZ

_oechem.OEMOPACOFlag_CHARGES_swigconstant(_oechem)
OEMOPACOFlag_CHARGES = _oechem.OEMOPACOFlag_CHARGES

_oechem.OEMOPACOFlag_DEFAULT_swigconstant(_oechem)
OEMOPACOFlag_DEFAULT = _oechem.OEMOPACOFlag_DEFAULT

_oechem.OEProperty_Undefined_swigconstant(_oechem)
OEProperty_Undefined = _oechem.OEProperty_Undefined

_oechem.OEProperty_Aromatic_swigconstant(_oechem)
OEProperty_Aromatic = _oechem.OEProperty_Aromatic

_oechem.OEProperty_Ring_swigconstant(_oechem)
OEProperty_Ring = _oechem.OEProperty_Ring

_oechem.OEProperty_Donor_swigconstant(_oechem)
OEProperty_Donor = _oechem.OEProperty_Donor

_oechem.OEProperty_Acceptor_swigconstant(_oechem)
OEProperty_Acceptor = _oechem.OEProperty_Acceptor

_oechem.OEProperty_Both_swigconstant(_oechem)
OEProperty_Both = _oechem.OEProperty_Both

_oechem.OEProperty_Chiral_swigconstant(_oechem)
OEProperty_Chiral = _oechem.OEProperty_Chiral

_oechem.OEProperty_Exo_swigconstant(_oechem)
OEProperty_Exo = _oechem.OEProperty_Exo

_oechem.OEProperty_Endo_swigconstant(_oechem)
OEProperty_Endo = _oechem.OEProperty_Endo

_oechem.OEProperty_StereoDefined_swigconstant(_oechem)
OEProperty_StereoDefined = _oechem.OEProperty_StereoDefined

_oechem.OEProperty_Visit_swigconstant(_oechem)
OEProperty_Visit = _oechem.OEProperty_Visit

_oechem.OEProperty_Deleted_swigconstant(_oechem)
OEProperty_Deleted = _oechem.OEProperty_Deleted

_oechem.OEProperty_Single_swigconstant(_oechem)
OEProperty_Single = _oechem.OEProperty_Single

_oechem.OEProperty_Double_swigconstant(_oechem)
OEProperty_Double = _oechem.OEProperty_Double

_oechem.OEProperty_Triple_swigconstant(_oechem)
OEProperty_Triple = _oechem.OEProperty_Triple

_oechem.OEProperty_Closure_swigconstant(_oechem)
OEProperty_Closure = _oechem.OEProperty_Closure

_oechem.OEProperty_Rotor_swigconstant(_oechem)
OEProperty_Rotor = _oechem.OEProperty_Rotor

_oechem.OEProperty_RingAtomsAndBonds_swigconstant(_oechem)
OEProperty_RingAtomsAndBonds = _oechem.OEProperty_RingAtomsAndBonds

_oechem.OEProperty_ClosureBonds_swigconstant(_oechem)
OEProperty_ClosureBonds = _oechem.OEProperty_ClosureBonds

_oechem.OEProperty_Chirality_swigconstant(_oechem)
OEProperty_Chirality = _oechem.OEProperty_Chirality

_oechem.OEProperty_Hybridization_swigconstant(_oechem)
OEProperty_Hybridization = _oechem.OEProperty_Hybridization

_oechem.OEProperty_Kekule_swigconstant(_oechem)
OEProperty_Kekule = _oechem.OEProperty_Kekule

_oechem.OEProperty_Degree_swigconstant(_oechem)
OEProperty_Degree = _oechem.OEProperty_Degree

_oechem.OEProperty_Valence_swigconstant(_oechem)
OEProperty_Valence = _oechem.OEProperty_Valence

_oechem.OEProperty_PhCorrected_swigconstant(_oechem)
OEProperty_PhCorrected = _oechem.OEProperty_PhCorrected

_oechem.OEProperty_AtomTypes_swigconstant(_oechem)
OEProperty_AtomTypes = _oechem.OEProperty_AtomTypes

_oechem.OEProperty_Residue_swigconstant(_oechem)
OEProperty_Residue = _oechem.OEProperty_Residue

_oechem.OEProperty_BondOrders_swigconstant(_oechem)
OEProperty_BondOrders = _oechem.OEProperty_BondOrders

_oechem.OEProperty_HydrogenMode_swigconstant(_oechem)
OEProperty_HydrogenMode = _oechem.OEProperty_HydrogenMode

_oechem.OEProperty_DeletedAtoms_swigconstant(_oechem)
OEProperty_DeletedAtoms = _oechem.OEProperty_DeletedAtoms

_oechem.OEProperty_DeletedBonds_swigconstant(_oechem)
OEProperty_DeletedBonds = _oechem.OEProperty_DeletedBonds

_oechem.OEProperty_AtomTypeString_swigconstant(_oechem)
OEProperty_AtomTypeString = _oechem.OEProperty_AtomTypeString

_oechem.OEProperty_BondTypeString_swigconstant(_oechem)
OEProperty_BondTypeString = _oechem.OEProperty_BondTypeString

_oechem.OEProperty_Isotope_swigconstant(_oechem)
OEProperty_Isotope = _oechem.OEProperty_Isotope

_oechem.OEProperty_PartialCharge_swigconstant(_oechem)
OEProperty_PartialCharge = _oechem.OEProperty_PartialCharge

_oechem.OEProperty_AtomTypeInt_swigconstant(_oechem)
OEProperty_AtomTypeInt = _oechem.OEProperty_AtomTypeInt

_oechem.OEProperty_AtomName_swigconstant(_oechem)
OEProperty_AtomName = _oechem.OEProperty_AtomName

_oechem.OEProperty_X_swigconstant(_oechem)
OEProperty_X = _oechem.OEProperty_X

_oechem.OEProperty_Y_swigconstant(_oechem)
OEProperty_Y = _oechem.OEProperty_Y

_oechem.OEProperty_Z_swigconstant(_oechem)
OEProperty_Z = _oechem.OEProperty_Z

_oechem.OEProperty_MatchOrder_swigconstant(_oechem)
OEProperty_MatchOrder = _oechem.OEProperty_MatchOrder

_oechem.OEProperty_OEBase_swigconstant(_oechem)
OEProperty_OEBase = _oechem.OEProperty_OEBase

_oechem.OEProperty_Rxn_swigconstant(_oechem)
OEProperty_Rxn = _oechem.OEProperty_Rxn

_oechem.OEProperty_RxnRole_swigconstant(_oechem)
OEProperty_RxnRole = _oechem.OEProperty_RxnRole

_oechem.OEProperty_AtomMemberPred_swigconstant(_oechem)
OEProperty_AtomMemberPred = _oechem.OEProperty_AtomMemberPred

_oechem.OEProperty_BondMemberPred_swigconstant(_oechem)
OEProperty_BondMemberPred = _oechem.OEProperty_BondMemberPred

_oechem.OEProperty_BondStereo_swigconstant(_oechem)
OEProperty_BondStereo = _oechem.OEProperty_BondStereo

_oechem.OEProperty_Component_swigconstant(_oechem)
OEProperty_Component = _oechem.OEProperty_Component

_oechem.OEProperty_AroModel_swigconstant(_oechem)
OEProperty_AroModel = _oechem.OEProperty_AroModel

_oechem.OEProperty_PartialChargeModel_swigconstant(_oechem)
OEProperty_PartialChargeModel = _oechem.OEProperty_PartialChargeModel

_oechem.OEProperty_Dimension_swigconstant(_oechem)
OEProperty_Dimension = _oechem.OEProperty_Dimension

_oechem.OEProperty_Perceived_swigconstant(_oechem)
OEProperty_Perceived = _oechem.OEProperty_Perceived

_oechem.OEProperty_MapIdx_swigconstant(_oechem)
OEProperty_MapIdx = _oechem.OEProperty_MapIdx

_oechem.OEProperty_SymClass_swigconstant(_oechem)
OEProperty_SymClass = _oechem.OEProperty_SymClass

_oechem.OEProperty_All_swigconstant(_oechem)
OEProperty_All = _oechem.OEProperty_All

_oechem.OEProperty_Radius_swigconstant(_oechem)
OEProperty_Radius = _oechem.OEProperty_Radius

_oechem.OEProperty_Anisou_swigconstant(_oechem)
OEProperty_Anisou = _oechem.OEProperty_Anisou

_oechem.OEProperty_MolDBIdx_swigconstant(_oechem)
OEProperty_MolDBIdx = _oechem.OEProperty_MolDBIdx

_oechem.OERxnRole_None_swigconstant(_oechem)
OERxnRole_None = _oechem.OERxnRole_None

_oechem.OERxnRole_Reactant_swigconstant(_oechem)
OERxnRole_Reactant = _oechem.OERxnRole_Reactant

_oechem.OERxnRole_Agent_swigconstant(_oechem)
OERxnRole_Agent = _oechem.OERxnRole_Agent

_oechem.OERxnRole_Catalyst_swigconstant(_oechem)
OERxnRole_Catalyst = _oechem.OERxnRole_Catalyst

_oechem.OERxnRole_Product_swigconstant(_oechem)
OERxnRole_Product = _oechem.OERxnRole_Product

_oechem.OECounts_Undefined_swigconstant(_oechem)
OECounts_Undefined = _oechem.OECounts_Undefined

_oechem.OECounts_Atoms_swigconstant(_oechem)
OECounts_Atoms = _oechem.OECounts_Atoms

_oechem.OECounts_Bonds_swigconstant(_oechem)
OECounts_Bonds = _oechem.OECounts_Bonds

_oechem.OECounts_Conformers_swigconstant(_oechem)
OECounts_Conformers = _oechem.OECounts_Conformers

_oechem.OECounts_Poses_swigconstant(_oechem)
OECounts_Poses = _oechem.OECounts_Poses

_oechem.OECounts_Rotors_swigconstant(_oechem)
OECounts_Rotors = _oechem.OECounts_Rotors

_oechem.OEFuzzVal_False_swigconstant(_oechem)
OEFuzzVal_False = _oechem.OEFuzzVal_False

_oechem.OEFuzzVal_True_swigconstant(_oechem)
OEFuzzVal_True = _oechem.OEFuzzVal_True

_oechem.OEFuzzVal_Maybe_swigconstant(_oechem)
OEFuzzVal_Maybe = _oechem.OEFuzzVal_Maybe

_oechem.OEGroupType_Undefined_swigconstant(_oechem)
OEGroupType_Undefined = _oechem.OEGroupType_Undefined

_oechem.OEGroupType_MDLAbsStereo_swigconstant(_oechem)
OEGroupType_MDLAbsStereo = _oechem.OEGroupType_MDLAbsStereo

_oechem.OEGroupType_MDLOrStereo_swigconstant(_oechem)
OEGroupType_MDLOrStereo = _oechem.OEGroupType_MDLOrStereo

_oechem.OEGroupType_MDLAndStereo_swigconstant(_oechem)
OEGroupType_MDLAndStereo = _oechem.OEGroupType_MDLAndStereo

_oechem.OEGroupType_Component_swigconstant(_oechem)
OEGroupType_Component = _oechem.OEGroupType_Component

_oechem.OEGroupType_UserDefined_swigconstant(_oechem)
OEGroupType_UserDefined = _oechem.OEGroupType_UserDefined

_oechem.OEHybridization_Unknown_swigconstant(_oechem)
OEHybridization_Unknown = _oechem.OEHybridization_Unknown

_oechem.OEHybridization_sp_swigconstant(_oechem)
OEHybridization_sp = _oechem.OEHybridization_sp

_oechem.OEHybridization_sp2_swigconstant(_oechem)
OEHybridization_sp2 = _oechem.OEHybridization_sp2

_oechem.OEHybridization_sp3_swigconstant(_oechem)
OEHybridization_sp3 = _oechem.OEHybridization_sp3

_oechem.OEHybridization_sp3d_swigconstant(_oechem)
OEHybridization_sp3d = _oechem.OEHybridization_sp3d

_oechem.OEHybridization_sp3d2_swigconstant(_oechem)
OEHybridization_sp3d2 = _oechem.OEHybridization_sp3d2

_oechem.OELingoType_Undefined_swigconstant(_oechem)
OELingoType_Undefined = _oechem.OELingoType_Undefined

_oechem.OELingoType_IsoSmiMap_swigconstant(_oechem)
OELingoType_IsoSmiMap = _oechem.OELingoType_IsoSmiMap

_oechem.OELingoType_Default_swigconstant(_oechem)
OELingoType_Default = _oechem.OELingoType_Default

_oechem.OEMCSType_Exhaustive_swigconstant(_oechem)
OEMCSType_Exhaustive = _oechem.OEMCSType_Exhaustive

_oechem.OEMCSType_Approximate_swigconstant(_oechem)
OEMCSType_Approximate = _oechem.OEMCSType_Approximate

OEMCSType_Default = OEMCSType_Exhaustive


_oechem.OEMMFFType_UNK_swigconstant(_oechem)
OEMMFFType_UNK = _oechem.OEMMFFType_UNK

_oechem.OEMMFFType_CR_swigconstant(_oechem)
OEMMFFType_CR = _oechem.OEMMFFType_CR

_oechem.OEMMFFType_CC_swigconstant(_oechem)
OEMMFFType_CC = _oechem.OEMMFFType_CC

_oechem.OEMMFFType_CSP2_swigconstant(_oechem)
OEMMFFType_CSP2 = _oechem.OEMMFFType_CSP2

_oechem.OEMMFFType_CO_swigconstant(_oechem)
OEMMFFType_CO = _oechem.OEMMFFType_CO

_oechem.OEMMFFType_CN_swigconstant(_oechem)
OEMMFFType_CN = _oechem.OEMMFFType_CN

_oechem.OEMMFFType_CGD_swigconstant(_oechem)
OEMMFFType_CGD = _oechem.OEMMFFType_CGD

_oechem.OEMMFFType_COR_swigconstant(_oechem)
OEMMFFType_COR = _oechem.OEMMFFType_COR

_oechem.OEMMFFType_CON_swigconstant(_oechem)
OEMMFFType_CON = _oechem.OEMMFFType_CON

_oechem.OEMMFFType_COO_swigconstant(_oechem)
OEMMFFType_COO = _oechem.OEMMFFType_COO

_oechem.OEMMFFType_COON_swigconstant(_oechem)
OEMMFFType_COON = _oechem.OEMMFFType_COON

_oechem.OEMMFFType_COOO_swigconstant(_oechem)
OEMMFFType_COOO = _oechem.OEMMFFType_COOO

_oechem.OEMMFFType_COS_swigconstant(_oechem)
OEMMFFType_COS = _oechem.OEMMFFType_COS

_oechem.OEMMFFType_CS_swigconstant(_oechem)
OEMMFFType_CS = _oechem.OEMMFFType_CS

_oechem.OEMMFFType_CSN_swigconstant(_oechem)
OEMMFFType_CSN = _oechem.OEMMFFType_CSN

_oechem.OEMMFFType_CSO2_swigconstant(_oechem)
OEMMFFType_CSO2 = _oechem.OEMMFFType_CSO2

_oechem.OEMMFFType_CSO_swigconstant(_oechem)
OEMMFFType_CSO = _oechem.OEMMFFType_CSO

_oechem.OEMMFFType_CSS_swigconstant(_oechem)
OEMMFFType_CSS = _oechem.OEMMFFType_CSS

_oechem.OEMMFFType_CP_swigconstant(_oechem)
OEMMFFType_CP = _oechem.OEMMFFType_CP

_oechem.OEMMFFType_CSP_swigconstant(_oechem)
OEMMFFType_CSP = _oechem.OEMMFFType_CSP

_oechem.OEMMFFType_C_swigconstant(_oechem)
OEMMFFType_C = _oechem.OEMMFFType_C

_oechem.OEMMFFType_HC_swigconstant(_oechem)
OEMMFFType_HC = _oechem.OEMMFFType_HC

_oechem.OEMMFFType_HSI_swigconstant(_oechem)
OEMMFFType_HSI = _oechem.OEMMFFType_HSI

_oechem.OEMMFFType_O_swigconstant(_oechem)
OEMMFFType_O = _oechem.OEMMFFType_O

_oechem.OEMMFFType_OR_swigconstant(_oechem)
OEMMFFType_OR = _oechem.OEMMFFType_OR

_oechem.OEMMFFType_OCO_swigconstant(_oechem)
OEMMFFType_OCO = _oechem.OEMMFFType_OCO

_oechem.OEMMFFType_OCC_swigconstant(_oechem)
OEMMFFType_OCC = _oechem.OEMMFFType_OCC

_oechem.OEMMFFType_OCN_swigconstant(_oechem)
OEMMFFType_OCN = _oechem.OEMMFFType_OCN

_oechem.OEMMFFType_OCS_swigconstant(_oechem)
OEMMFFType_OCS = _oechem.OEMMFFType_OCS

_oechem.OEMMFFType_ONO2_swigconstant(_oechem)
OEMMFFType_ONO2 = _oechem.OEMMFFType_ONO2

_oechem.OEMMFFType_ONO_swigconstant(_oechem)
OEMMFFType_ONO = _oechem.OEMMFFType_ONO

_oechem.OEMMFFType_OSO3_swigconstant(_oechem)
OEMMFFType_OSO3 = _oechem.OEMMFFType_OSO3

_oechem.OEMMFFType_OSO2_swigconstant(_oechem)
OEMMFFType_OSO2 = _oechem.OEMMFFType_OSO2

_oechem.OEMMFFType_OSO_swigconstant(_oechem)
OEMMFFType_OSO = _oechem.OEMMFFType_OSO

_oechem.OEMMFFType_OSO__swigconstant(_oechem)
OEMMFFType_OSO_ = _oechem.OEMMFFType_OSO_

_oechem.OEMMFFType_OS_swigconstant(_oechem)
OEMMFFType_OS = _oechem.OEMMFFType_OS

_oechem.OEMMFFType_OPO3_swigconstant(_oechem)
OEMMFFType_OPO3 = _oechem.OEMMFFType_OPO3

_oechem.OEMMFFType_OPO2_swigconstant(_oechem)
OEMMFFType_OPO2 = _oechem.OEMMFFType_OPO2

_oechem.OEMMFFType_OPO_swigconstant(_oechem)
OEMMFFType_OPO = _oechem.OEMMFFType_OPO

_oechem.OEMMFFType_OP_swigconstant(_oechem)
OEMMFFType_OP = _oechem.OEMMFFType_OP

_oechem.OEMMFFType_OC_swigconstant(_oechem)
OEMMFFType_OC = _oechem.OEMMFFType_OC

_oechem.OEMMFFType_OCN__swigconstant(_oechem)
OEMMFFType_OCN_ = _oechem.OEMMFFType_OCN_

_oechem.OEMMFFType_OCR_swigconstant(_oechem)
OEMMFFType_OCR = _oechem.OEMMFFType_OCR

_oechem.OEMMFFType_OCO__swigconstant(_oechem)
OEMMFFType_OCO_ = _oechem.OEMMFFType_OCO_

_oechem.OEMMFFType_ON_swigconstant(_oechem)
OEMMFFType_ON = _oechem.OEMMFFType_ON

_oechem.OEMMFFType_OS__swigconstant(_oechem)
OEMMFFType_OS_ = _oechem.OEMMFFType_OS_

_oechem.OEMMFFType_OS___swigconstant(_oechem)
OEMMFFType_OS__ = _oechem.OEMMFFType_OS__

_oechem.OEMMFFType_NR_swigconstant(_oechem)
OEMMFFType_NR = _oechem.OEMMFFType_NR

_oechem.OEMMFFType_NC_swigconstant(_oechem)
OEMMFFType_NC = _oechem.OEMMFFType_NC

_oechem.OEMMFFType_NN_swigconstant(_oechem)
OEMMFFType_NN = _oechem.OEMMFFType_NN

_oechem.OEMMFFType_NCO_swigconstant(_oechem)
OEMMFFType_NCO = _oechem.OEMMFFType_NCO

_oechem.OEMMFFType_NCS_swigconstant(_oechem)
OEMMFFType_NCS = _oechem.OEMMFFType_NCS

_oechem.OEMMFFType_NNC_swigconstant(_oechem)
OEMMFFType_NNC = _oechem.OEMMFFType_NNC

_oechem.OEMMFFType_NNN_swigconstant(_oechem)
OEMMFFType_NNN = _oechem.OEMMFFType_NNN

_oechem.OEMMFFType_F_swigconstant(_oechem)
OEMMFFType_F = _oechem.OEMMFFType_F

_oechem.OEMMFFType_CL_swigconstant(_oechem)
OEMMFFType_CL = _oechem.OEMMFFType_CL

_oechem.OEMMFFType_Cl_swigconstant(_oechem)
OEMMFFType_Cl = _oechem.OEMMFFType_Cl

_oechem.OEMMFFType_BR_swigconstant(_oechem)
OEMMFFType_BR = _oechem.OEMMFFType_BR

_oechem.OEMMFFType_Br_swigconstant(_oechem)
OEMMFFType_Br = _oechem.OEMMFFType_Br

_oechem.OEMMFFType_I_swigconstant(_oechem)
OEMMFFType_I = _oechem.OEMMFFType_I

_oechem.OEMMFFType_S_swigconstant(_oechem)
OEMMFFType_S = _oechem.OEMMFFType_S

_oechem.OEMMFFType_SC_swigconstant(_oechem)
OEMMFFType_SC = _oechem.OEMMFFType_SC

_oechem.OEMMFFType_SO_swigconstant(_oechem)
OEMMFFType_SO = _oechem.OEMMFFType_SO

_oechem.OEMMFFType_SN_swigconstant(_oechem)
OEMMFFType_SN = _oechem.OEMMFFType_SN

_oechem.OEMMFFType_SO2_swigconstant(_oechem)
OEMMFFType_SO2 = _oechem.OEMMFFType_SO2

_oechem.OEMMFFType_SO2N_swigconstant(_oechem)
OEMMFFType_SO2N = _oechem.OEMMFFType_SO2N

_oechem.OEMMFFType_SO3_swigconstant(_oechem)
OEMMFFType_SO3 = _oechem.OEMMFFType_SO3

_oechem.OEMMFFType_SO4_swigconstant(_oechem)
OEMMFFType_SO4 = _oechem.OEMMFFType_SO4

_oechem.OEMMFFType_SO2__swigconstant(_oechem)
OEMMFFType_SO2_ = _oechem.OEMMFFType_SO2_

_oechem.OEMMFFType_SNO_swigconstant(_oechem)
OEMMFFType_SNO = _oechem.OEMMFFType_SNO

_oechem.OEMMFFType_SI_swigconstant(_oechem)
OEMMFFType_SI = _oechem.OEMMFFType_SI

_oechem.OEMMFFType_CR4R_swigconstant(_oechem)
OEMMFFType_CR4R = _oechem.OEMMFFType_CR4R

_oechem.OEMMFFType_HOR_swigconstant(_oechem)
OEMMFFType_HOR = _oechem.OEMMFFType_HOR

_oechem.OEMMFFType_HO_swigconstant(_oechem)
OEMMFFType_HO = _oechem.OEMMFFType_HO

_oechem.OEMMFFType_CR3R_swigconstant(_oechem)
OEMMFFType_CR3R = _oechem.OEMMFFType_CR3R

_oechem.OEMMFFType_HNR_swigconstant(_oechem)
OEMMFFType_HNR = _oechem.OEMMFFType_HNR

_oechem.OEMMFFType_HPYL_swigconstant(_oechem)
OEMMFFType_HPYL = _oechem.OEMMFFType_HPYL

_oechem.OEMMFFType_H3N_swigconstant(_oechem)
OEMMFFType_H3N = _oechem.OEMMFFType_H3N

_oechem.OEMMFFType_HNOX_swigconstant(_oechem)
OEMMFFType_HNOX = _oechem.OEMMFFType_HNOX

_oechem.OEMMFFType_HOCO_swigconstant(_oechem)
OEMMFFType_HOCO = _oechem.OEMMFFType_HOCO

_oechem.OEMMFFType_HOP_swigconstant(_oechem)
OEMMFFType_HOP = _oechem.OEMMFFType_HOP

_oechem.OEMMFFType_PO4_swigconstant(_oechem)
OEMMFFType_PO4 = _oechem.OEMMFFType_PO4

_oechem.OEMMFFType_PO3_swigconstant(_oechem)
OEMMFFType_PO3 = _oechem.OEMMFFType_PO3

_oechem.OEMMFFType_PO2_swigconstant(_oechem)
OEMMFFType_PO2 = _oechem.OEMMFFType_PO2

_oechem.OEMMFFType_PO_swigconstant(_oechem)
OEMMFFType_PO = _oechem.OEMMFFType_PO

_oechem.OEMMFFType_PTET_swigconstant(_oechem)
OEMMFFType_PTET = _oechem.OEMMFFType_PTET

_oechem.OEMMFFType_P_swigconstant(_oechem)
OEMMFFType_P = _oechem.OEMMFFType_P

_oechem.OEMMFFType_HNC_swigconstant(_oechem)
OEMMFFType_HNC = _oechem.OEMMFFType_HNC

_oechem.OEMMFFType_HNN_swigconstant(_oechem)
OEMMFFType_HNN = _oechem.OEMMFFType_HNN

_oechem.OEMMFFType_HNCO_swigconstant(_oechem)
OEMMFFType_HNCO = _oechem.OEMMFFType_HNCO

_oechem.OEMMFFType_HNCS_swigconstant(_oechem)
OEMMFFType_HNCS = _oechem.OEMMFFType_HNCS

_oechem.OEMMFFType_HNCC_swigconstant(_oechem)
OEMMFFType_HNCC = _oechem.OEMMFFType_HNCC

_oechem.OEMMFFType_HNCN_swigconstant(_oechem)
OEMMFFType_HNCN = _oechem.OEMMFFType_HNCN

_oechem.OEMMFFType_HNNC_swigconstant(_oechem)
OEMMFFType_HNNC = _oechem.OEMMFFType_HNNC

_oechem.OEMMFFType_HNNN_swigconstant(_oechem)
OEMMFFType_HNNN = _oechem.OEMMFFType_HNNN

_oechem.OEMMFFType_HNSO_swigconstant(_oechem)
OEMMFFType_HNSO = _oechem.OEMMFFType_HNSO

_oechem.OEMMFFType_HNC__swigconstant(_oechem)
OEMMFFType_HNC_ = _oechem.OEMMFFType_HNC_

_oechem.OEMMFFType_HSP2_swigconstant(_oechem)
OEMMFFType_HSP2 = _oechem.OEMMFFType_HSP2

_oechem.OEMMFFType_HOCC_swigconstant(_oechem)
OEMMFFType_HOCC = _oechem.OEMMFFType_HOCC

_oechem.OEMMFFType_HOCN_swigconstant(_oechem)
OEMMFFType_HOCN = _oechem.OEMMFFType_HOCN

_oechem.OEMMFFType_CR4E_swigconstant(_oechem)
OEMMFFType_CR4E = _oechem.OEMMFFType_CR4E

_oechem.OEMMFFType_HOH_swigconstant(_oechem)
OEMMFFType_HOH = _oechem.OEMMFFType_HOH

_oechem.OEMMFFType_O2CM_swigconstant(_oechem)
OEMMFFType_O2CM = _oechem.OEMMFFType_O2CM

_oechem.OEMMFFType_OXN_swigconstant(_oechem)
OEMMFFType_OXN = _oechem.OEMMFFType_OXN

_oechem.OEMMFFType_ON__swigconstant(_oechem)
OEMMFFType_ON_ = _oechem.OEMMFFType_ON_

_oechem.OEMMFFType_O2N_swigconstant(_oechem)
OEMMFFType_O2N = _oechem.OEMMFFType_O2N

_oechem.OEMMFFType_O2NO_swigconstant(_oechem)
OEMMFFType_O2NO = _oechem.OEMMFFType_O2NO

_oechem.OEMMFFType_O3N_swigconstant(_oechem)
OEMMFFType_O3N = _oechem.OEMMFFType_O3N

_oechem.OEMMFFType_OS____swigconstant(_oechem)
OEMMFFType_OS___ = _oechem.OEMMFFType_OS___

_oechem.OEMMFFType_O2S_swigconstant(_oechem)
OEMMFFType_O2S = _oechem.OEMMFFType_O2S

_oechem.OEMMFFType_O3S_swigconstant(_oechem)
OEMMFFType_O3S = _oechem.OEMMFFType_O3S

_oechem.OEMMFFType_O4S_swigconstant(_oechem)
OEMMFFType_O4S = _oechem.OEMMFFType_O4S

_oechem.OEMMFFType_OSMS_swigconstant(_oechem)
OEMMFFType_OSMS = _oechem.OEMMFFType_OSMS

_oechem.OEMMFFType_OP__swigconstant(_oechem)
OEMMFFType_OP_ = _oechem.OEMMFFType_OP_

_oechem.OEMMFFType_O2P_swigconstant(_oechem)
OEMMFFType_O2P = _oechem.OEMMFFType_O2P

_oechem.OEMMFFType_O3P_swigconstant(_oechem)
OEMMFFType_O3P = _oechem.OEMMFFType_O3P

_oechem.OEMMFFType_O4P_swigconstant(_oechem)
OEMMFFType_O4P = _oechem.OEMMFFType_O4P

_oechem.OEMMFFType_O4CL_swigconstant(_oechem)
OEMMFFType_O4CL = _oechem.OEMMFFType_O4CL

_oechem.OEMMFFType_O4Cl_swigconstant(_oechem)
OEMMFFType_O4Cl = _oechem.OEMMFFType_O4Cl

_oechem.OEMMFFType_HOS_swigconstant(_oechem)
OEMMFFType_HOS = _oechem.OEMMFFType_HOS

_oechem.OEMMFFType_NR__swigconstant(_oechem)
OEMMFFType_NR_ = _oechem.OEMMFFType_NR_

_oechem.OEMMFFType_OM_swigconstant(_oechem)
OEMMFFType_OM = _oechem.OEMMFFType_OM

_oechem.OEMMFFType_OM2_swigconstant(_oechem)
OEMMFFType_OM2 = _oechem.OEMMFFType_OM2

_oechem.OEMMFFType_HNR__swigconstant(_oechem)
OEMMFFType_HNR_ = _oechem.OEMMFFType_HNR_

_oechem.OEMMFFType_HIM_swigconstant(_oechem)
OEMMFFType_HIM = _oechem.OEMMFFType_HIM

_oechem.OEMMFFType_HPD__swigconstant(_oechem)
OEMMFFType_HPD_ = _oechem.OEMMFFType_HPD_

_oechem.OEMMFFType_HNN__swigconstant(_oechem)
OEMMFFType_HNN_ = _oechem.OEMMFFType_HNN_

_oechem.OEMMFFType_HNC___swigconstant(_oechem)
OEMMFFType_HNC__ = _oechem.OEMMFFType_HNC__

_oechem.OEMMFFType_HGD__swigconstant(_oechem)
OEMMFFType_HGD_ = _oechem.OEMMFFType_HGD_

_oechem.OEMMFFType_CB_swigconstant(_oechem)
OEMMFFType_CB = _oechem.OEMMFFType_CB

_oechem.OEMMFFType_NPYD_swigconstant(_oechem)
OEMMFFType_NPYD = _oechem.OEMMFFType_NPYD

_oechem.OEMMFFType_NPYL_swigconstant(_oechem)
OEMMFFType_NPYL = _oechem.OEMMFFType_NPYL

_oechem.OEMMFFType_NCC_swigconstant(_oechem)
OEMMFFType_NCC = _oechem.OEMMFFType_NCC

_oechem.OEMMFFType_NCN_swigconstant(_oechem)
OEMMFFType_NCN = _oechem.OEMMFFType_NCN

_oechem.OEMMFFType_NCP_swigconstant(_oechem)
OEMMFFType_NCP = _oechem.OEMMFFType_NCP

_oechem.OEMMFFType_NCC__swigconstant(_oechem)
OEMMFFType_NCC_ = _oechem.OEMMFFType_NCC_

_oechem.OEMMFFType_CO2M_swigconstant(_oechem)
OEMMFFType_CO2M = _oechem.OEMMFFType_CO2M

_oechem.OEMMFFType_CS2M_swigconstant(_oechem)
OEMMFFType_CS2M = _oechem.OEMMFFType_CS2M

_oechem.OEMMFFType_NSP_swigconstant(_oechem)
OEMMFFType_NSP = _oechem.OEMMFFType_NSP

_oechem.OEMMFFType_NSO2_swigconstant(_oechem)
OEMMFFType_NSO2 = _oechem.OEMMFFType_NSO2

_oechem.OEMMFFType_NSO3_swigconstant(_oechem)
OEMMFFType_NSO3 = _oechem.OEMMFFType_NSO3

_oechem.OEMMFFType_NCN__swigconstant(_oechem)
OEMMFFType_NCN_ = _oechem.OEMMFFType_NCN_

_oechem.OEMMFFType_STHI_swigconstant(_oechem)
OEMMFFType_STHI = _oechem.OEMMFFType_STHI

_oechem.OEMMFFType_NO2_swigconstant(_oechem)
OEMMFFType_NO2 = _oechem.OEMMFFType_NO2

_oechem.OEMMFFType_NO3_swigconstant(_oechem)
OEMMFFType_NO3 = _oechem.OEMMFFType_NO3

_oechem.OEMMFFType_NO_swigconstant(_oechem)
OEMMFFType_NO = _oechem.OEMMFFType_NO

_oechem.OEMMFFType_NAZT_swigconstant(_oechem)
OEMMFFType_NAZT = _oechem.OEMMFFType_NAZT

_oechem.OEMMFFType_NSO_swigconstant(_oechem)
OEMMFFType_NSO = _oechem.OEMMFFType_NSO

_oechem.OEMMFFType_O__swigconstant(_oechem)
OEMMFFType_O_ = _oechem.OEMMFFType_O_

_oechem.OEMMFFType_HO__swigconstant(_oechem)
OEMMFFType_HO_ = _oechem.OEMMFFType_HO_

_oechem.OEMMFFType_O___swigconstant(_oechem)
OEMMFFType_O__ = _oechem.OEMMFFType_O__

_oechem.OEMMFFType_HO___swigconstant(_oechem)
OEMMFFType_HO__ = _oechem.OEMMFFType_HO__

_oechem.OEMMFFType_N__swigconstant(_oechem)
OEMMFFType_N_ = _oechem.OEMMFFType_N_

_oechem.OEMMFFType_NC__swigconstant(_oechem)
OEMMFFType_NC_ = _oechem.OEMMFFType_NC_

_oechem.OEMMFFType_NN__swigconstant(_oechem)
OEMMFFType_NN_ = _oechem.OEMMFFType_NN_

_oechem.OEMMFFType_NCN___swigconstant(_oechem)
OEMMFFType_NCN__ = _oechem.OEMMFFType_NCN__

_oechem.OEMMFFType_NGD__swigconstant(_oechem)
OEMMFFType_NGD_ = _oechem.OEMMFFType_NGD_

_oechem.OEMMFFType_CGD__swigconstant(_oechem)
OEMMFFType_CGD_ = _oechem.OEMMFFType_CGD_

_oechem.OEMMFFType_CNN__swigconstant(_oechem)
OEMMFFType_CNN_ = _oechem.OEMMFFType_CNN_

_oechem.OEMMFFType_NPD__swigconstant(_oechem)
OEMMFFType_NPD_ = _oechem.OEMMFFType_NPD_

_oechem.OEMMFFType_OFUR_swigconstant(_oechem)
OEMMFFType_OFUR = _oechem.OEMMFFType_OFUR

_oechem.OEMMFFType_C___swigconstant(_oechem)
OEMMFFType_C__ = _oechem.OEMMFFType_C__

_oechem.OEMMFFType_NR___swigconstant(_oechem)
OEMMFFType_NR__ = _oechem.OEMMFFType_NR__

_oechem.OEMMFFType_NM_swigconstant(_oechem)
OEMMFFType_NM = _oechem.OEMMFFType_NM

_oechem.OEMMFFType_C5A_swigconstant(_oechem)
OEMMFFType_C5A = _oechem.OEMMFFType_C5A

_oechem.OEMMFFType_C5B_swigconstant(_oechem)
OEMMFFType_C5B = _oechem.OEMMFFType_C5B

_oechem.OEMMFFType_N5A_swigconstant(_oechem)
OEMMFFType_N5A = _oechem.OEMMFFType_N5A

_oechem.OEMMFFType_N5B_swigconstant(_oechem)
OEMMFFType_N5B = _oechem.OEMMFFType_N5B

_oechem.OEMMFFType_N2OX_swigconstant(_oechem)
OEMMFFType_N2OX = _oechem.OEMMFFType_N2OX

_oechem.OEMMFFType_N3OX_swigconstant(_oechem)
OEMMFFType_N3OX = _oechem.OEMMFFType_N3OX

_oechem.OEMMFFType_NPOX_swigconstant(_oechem)
OEMMFFType_NPOX = _oechem.OEMMFFType_NPOX

_oechem.OEMMFFType_OH2_swigconstant(_oechem)
OEMMFFType_OH2 = _oechem.OEMMFFType_OH2

_oechem.OEMMFFType_HS_swigconstant(_oechem)
OEMMFFType_HS = _oechem.OEMMFFType_HS

_oechem.OEMMFFType_HSN_swigconstant(_oechem)
OEMMFFType_HSN = _oechem.OEMMFFType_HSN

_oechem.OEMMFFType_HP_swigconstant(_oechem)
OEMMFFType_HP = _oechem.OEMMFFType_HP

_oechem.OEMMFFType_SP_swigconstant(_oechem)
OEMMFFType_SP = _oechem.OEMMFFType_SP

_oechem.OEMMFFType_SM_swigconstant(_oechem)
OEMMFFType_SM = _oechem.OEMMFFType_SM

_oechem.OEMMFFType_SSMO_swigconstant(_oechem)
OEMMFFType_SSMO = _oechem.OEMMFFType_SSMO

_oechem.OEMMFFType_SO2M_swigconstant(_oechem)
OEMMFFType_SO2M = _oechem.OEMMFFType_SO2M

_oechem.OEMMFFType_SSOM_swigconstant(_oechem)
OEMMFFType_SSOM = _oechem.OEMMFFType_SSOM

_oechem.OEMMFFType_SO__swigconstant(_oechem)
OEMMFFType_SO_ = _oechem.OEMMFFType_SO_

_oechem.OEMMFFType_PC_swigconstant(_oechem)
OEMMFFType_PC = _oechem.OEMMFFType_PC

_oechem.OEMMFFType_N5M_swigconstant(_oechem)
OEMMFFType_N5M = _oechem.OEMMFFType_N5M

_oechem.OEMMFFType_CLO4_swigconstant(_oechem)
OEMMFFType_CLO4 = _oechem.OEMMFFType_CLO4

_oechem.OEMMFFType_C5_swigconstant(_oechem)
OEMMFFType_C5 = _oechem.OEMMFFType_C5

_oechem.OEMMFFType_N5_swigconstant(_oechem)
OEMMFFType_N5 = _oechem.OEMMFFType_N5

_oechem.OEMMFFType_CIM_swigconstant(_oechem)
OEMMFFType_CIM = _oechem.OEMMFFType_CIM

_oechem.OEMMFFType_NIM_swigconstant(_oechem)
OEMMFFType_NIM = _oechem.OEMMFFType_NIM

_oechem.OEMMFFType_N5A__swigconstant(_oechem)
OEMMFFType_N5A_ = _oechem.OEMMFFType_N5A_

_oechem.OEMMFFType_N5B__swigconstant(_oechem)
OEMMFFType_N5B_ = _oechem.OEMMFFType_N5B_

_oechem.OEMMFFType_N5__swigconstant(_oechem)
OEMMFFType_N5_ = _oechem.OEMMFFType_N5_

_oechem.OEMMFFType_N5AX_swigconstant(_oechem)
OEMMFFType_N5AX = _oechem.OEMMFFType_N5AX

_oechem.OEMMFFType_N5BX_swigconstant(_oechem)
OEMMFFType_N5BX = _oechem.OEMMFFType_N5BX

_oechem.OEMMFFType_N5OX_swigconstant(_oechem)
OEMMFFType_N5OX = _oechem.OEMMFFType_N5OX

_oechem.OEMMFFType_FE2_swigconstant(_oechem)
OEMMFFType_FE2 = _oechem.OEMMFFType_FE2

_oechem.OEMMFFType_FE3_swigconstant(_oechem)
OEMMFFType_FE3 = _oechem.OEMMFFType_FE3

_oechem.OEMMFFType_F__swigconstant(_oechem)
OEMMFFType_F_ = _oechem.OEMMFFType_F_

_oechem.OEMMFFType_CL__swigconstant(_oechem)
OEMMFFType_CL_ = _oechem.OEMMFFType_CL_

_oechem.OEMMFFType_BR__swigconstant(_oechem)
OEMMFFType_BR_ = _oechem.OEMMFFType_BR_

_oechem.OEMMFFType_LI_swigconstant(_oechem)
OEMMFFType_LI = _oechem.OEMMFFType_LI

_oechem.OEMMFFType_NA_swigconstant(_oechem)
OEMMFFType_NA = _oechem.OEMMFFType_NA

_oechem.OEMMFFType_K_swigconstant(_oechem)
OEMMFFType_K = _oechem.OEMMFFType_K

_oechem.OEMMFFType_ZN2_swigconstant(_oechem)
OEMMFFType_ZN2 = _oechem.OEMMFFType_ZN2

_oechem.OEMMFFType_CA2_swigconstant(_oechem)
OEMMFFType_CA2 = _oechem.OEMMFFType_CA2

_oechem.OEMMFFType_CU1_swigconstant(_oechem)
OEMMFFType_CU1 = _oechem.OEMMFFType_CU1

_oechem.OEMMFFType_CU2_swigconstant(_oechem)
OEMMFFType_CU2 = _oechem.OEMMFFType_CU2

_oechem.OEMMFFType_MG2_swigconstant(_oechem)
OEMMFFType_MG2 = _oechem.OEMMFFType_MG2

_oechem.OEMMFFType_HOM_swigconstant(_oechem)
OEMMFFType_HOM = _oechem.OEMMFFType_HOM

_oechem.OEMMFFType_HOCS_swigconstant(_oechem)
OEMMFFType_HOCS = _oechem.OEMMFFType_HOCS

_oechem.OEMMFFType_HON_swigconstant(_oechem)
OEMMFFType_HON = _oechem.OEMMFFType_HON

_oechem.OEMMFFType_HX_swigconstant(_oechem)
OEMMFFType_HX = _oechem.OEMMFFType_HX

_oechem.OEMMFFType_HNO_swigconstant(_oechem)
OEMMFFType_HNO = _oechem.OEMMFFType_HNO

_oechem.OEMMFFType_HN5__swigconstant(_oechem)
OEMMFFType_HN5_ = _oechem.OEMMFFType_HN5_

_oechem.OEMMFFType_NPO2_swigconstant(_oechem)
OEMMFFType_NPO2 = _oechem.OEMMFFType_NPO2

_oechem.OEMMFFType_NPO3_swigconstant(_oechem)
OEMMFFType_NPO3 = _oechem.OEMMFFType_NPO3

_oechem.OEMMFFType_HNPO_swigconstant(_oechem)
OEMMFFType_HNPO = _oechem.OEMMFFType_HNPO

_oechem.OEMMFFType_HNO2_swigconstant(_oechem)
OEMMFFType_HNO2 = _oechem.OEMMFFType_HNO2

_oechem.OEMMFFType_HNM_swigconstant(_oechem)
OEMMFFType_HNM = _oechem.OEMMFFType_HNM

_oechem.OEMMFFType_CONN_swigconstant(_oechem)
OEMMFFType_CONN = _oechem.OEMMFFType_CONN

_oechem.OEMMFFType_S2CM_swigconstant(_oechem)
OEMMFFType_S2CM = _oechem.OEMMFFType_S2CM

_oechem.OEMMFFType_SE_swigconstant(_oechem)
OEMMFFType_SE = _oechem.OEMMFFType_SE

_oechem.OEMMFFType_Se_swigconstant(_oechem)
OEMMFFType_Se = _oechem.OEMMFFType_Se

_oechem.OEMMFFType_B_swigconstant(_oechem)
OEMMFFType_B = _oechem.OEMMFFType_B

_oechem.OEMMFFType_HSE_swigconstant(_oechem)
OEMMFFType_HSE = _oechem.OEMMFFType_HSE

_oechem.OEMMFFType_HSe_swigconstant(_oechem)
OEMMFFType_HSe = _oechem.OEMMFFType_HSe

_oechem.OEMMFFType_B__swigconstant(_oechem)
OEMMFFType_B_ = _oechem.OEMMFFType_B_

_oechem.OEMMFFType_HB_swigconstant(_oechem)
OEMMFFType_HB = _oechem.OEMMFFType_HB

_oechem.OEMMFFType_DUMMY_swigconstant(_oechem)
OEMMFFType_DUMMY = _oechem.OEMMFFType_DUMMY

_oechem.OEMMFFType_MAXTYPE_swigconstant(_oechem)
OEMMFFType_MAXTYPE = _oechem.OEMMFFType_MAXTYPE

_oechem.OEPerceived_RingAtomsAndBonds_swigconstant(_oechem)
OEPerceived_RingAtomsAndBonds = _oechem.OEPerceived_RingAtomsAndBonds

_oechem.OEPerceived_Aromaticity_swigconstant(_oechem)
OEPerceived_Aromaticity = _oechem.OEPerceived_Aromaticity

_oechem.OEPerceived_AtomStereo_swigconstant(_oechem)
OEPerceived_AtomStereo = _oechem.OEPerceived_AtomStereo

_oechem.OEPerceived_BondStereo_swigconstant(_oechem)
OEPerceived_BondStereo = _oechem.OEPerceived_BondStereo

_oechem.OEPerceived_Chiral_swigconstant(_oechem)
OEPerceived_Chiral = _oechem.OEPerceived_Chiral

_oechem.OEPerceived_PartialCharges_swigconstant(_oechem)
OEPerceived_PartialCharges = _oechem.OEPerceived_PartialCharges

_oechem.OEPerceived_Chains_swigconstant(_oechem)
OEPerceived_Chains = _oechem.OEPerceived_Chains

_oechem.OEPerceived_Hybridization_swigconstant(_oechem)
OEPerceived_Hybridization = _oechem.OEPerceived_Hybridization

_oechem.OEPerceived_Energy_swigconstant(_oechem)
OEPerceived_Energy = _oechem.OEPerceived_Energy

_oechem.OEPerceived_SecondaryStructure_swigconstant(_oechem)
OEPerceived_SecondaryStructure = _oechem.OEPerceived_SecondaryStructure

_oechem.OEMolBaseType_Undefined_swigconstant(_oechem)
OEMolBaseType_Undefined = _oechem.OEMolBaseType_Undefined

_oechem.OEMolBaseType_OEDefault_swigconstant(_oechem)
OEMolBaseType_OEDefault = _oechem.OEMolBaseType_OEDefault

_oechem.OEMolBaseType_OEDBMol_swigconstant(_oechem)
OEMolBaseType_OEDBMol = _oechem.OEMolBaseType_OEDBMol

_oechem.OEMolBaseType_OEMiniMol_swigconstant(_oechem)
OEMolBaseType_OEMiniMol = _oechem.OEMolBaseType_OEMiniMol

_oechem.OEMolBaseType_MaxType_swigconstant(_oechem)
OEMolBaseType_MaxType = _oechem.OEMolBaseType_MaxType

_oechem.OEMCMolType_Undefined_swigconstant(_oechem)
OEMCMolType_Undefined = _oechem.OEMCMolType_Undefined

_oechem.OEMCMolType_Cartesian_swigconstant(_oechem)
OEMCMolType_Cartesian = _oechem.OEMCMolType_Cartesian

OEMCMolType_FloatCartesian = OEMCMolType_Cartesian


_oechem.OEMCMolType_DoubleCartesian_swigconstant(_oechem)
OEMCMolType_DoubleCartesian = _oechem.OEMCMolType_DoubleCartesian

_oechem.OEMCMolType_LongDoubleCartesian_swigconstant(_oechem)
OEMCMolType_LongDoubleCartesian = _oechem.OEMCMolType_LongDoubleCartesian

_oechem.OEMCMolType_HalfFloatCartesian_swigconstant(_oechem)
OEMCMolType_HalfFloatCartesian = _oechem.OEMCMolType_HalfFloatCartesian

_oechem.OEMCMolType_OEDBMCMol_swigconstant(_oechem)
OEMCMolType_OEDBMCMol = _oechem.OEMCMolType_OEDBMCMol

_oechem.OEMCMolType_MaxType_swigconstant(_oechem)
OEMCMolType_MaxType = _oechem.OEMCMolType_MaxType

OEMCMolType_OEDefault = OEMCMolType_FloatCartesian


_oechem.OEQMolType_Undefined_swigconstant(_oechem)
OEQMolType_Undefined = _oechem.OEQMolType_Undefined

_oechem.OEQMolType_OEDefault_swigconstant(_oechem)
OEQMolType_OEDefault = _oechem.OEQMolType_OEDefault

_oechem.OEQMolType_MaxType_swigconstant(_oechem)
OEQMolType_MaxType = _oechem.OEQMolType_MaxType

OEGraphMolType_Undefined = 0


OEGraphMolType_OEDBMol = 2


OEGraphMolType_MaxType = 4


OEGraphMolType_OEMiniMol = 3


OEGraphMolType_OEDefault = 1


OEMolType_LongDoubleCartesian = 3


OEMolType_HalfFloatCartesian = 4


OEMolType_OEDefault = OEMCMolType_FloatCartesian


OEMolType_FloatCartesian = OEMCMolType_Cartesian


OEMolType_OEDBMCMol = 5


OEMolType_MaxType = 6


OEMolType_Undefined = 0


OEMolType_Cartesian = 1


OEMolType_DoubleCartesian = 2


_oechem.OESLNFlag_Isotopes_swigconstant(_oechem)
OESLNFlag_Isotopes = _oechem.OESLNFlag_Isotopes

_oechem.OESLNFlag_Hydrogens_swigconstant(_oechem)
OESLNFlag_Hydrogens = _oechem.OESLNFlag_Hydrogens

_oechem.OESLNFlag_Canonical_swigconstant(_oechem)
OESLNFlag_Canonical = _oechem.OESLNFlag_Canonical

_oechem.OESLNFlag_Kekule_swigconstant(_oechem)
OESLNFlag_Kekule = _oechem.OESLNFlag_Kekule

_oechem.OESLNFlag_Name_swigconstant(_oechem)
OESLNFlag_Name = _oechem.OESLNFlag_Name

_oechem.OESLNFlag_FCharge_swigconstant(_oechem)
OESLNFlag_FCharge = _oechem.OESLNFlag_FCharge

_oechem.OESLNFlag_Coords2D_swigconstant(_oechem)
OESLNFlag_Coords2D = _oechem.OESLNFlag_Coords2D

_oechem.OESLNFlag_Coords3D_swigconstant(_oechem)
OESLNFlag_Coords3D = _oechem.OESLNFlag_Coords3D

_oechem.OESLNFlag_DEFAULT_swigconstant(_oechem)
OESLNFlag_DEFAULT = _oechem.OESLNFlag_DEFAULT

_oechem.OESMILESFlag_Isotopes_swigconstant(_oechem)
OESMILESFlag_Isotopes = _oechem.OESMILESFlag_Isotopes

_oechem.OESMILESFlag_Hydrogens_swigconstant(_oechem)
OESMILESFlag_Hydrogens = _oechem.OESMILESFlag_Hydrogens

_oechem.OESMILESFlag_RGroups_swigconstant(_oechem)
OESMILESFlag_RGroups = _oechem.OESMILESFlag_RGroups

_oechem.OESMILESFlag_AtomStereo_swigconstant(_oechem)
OESMILESFlag_AtomStereo = _oechem.OESMILESFlag_AtomStereo

_oechem.OESMILESFlag_BondStereo_swigconstant(_oechem)
OESMILESFlag_BondStereo = _oechem.OESMILESFlag_BondStereo

_oechem.OESMILESFlag_AtomMaps_swigconstant(_oechem)
OESMILESFlag_AtomMaps = _oechem.OESMILESFlag_AtomMaps

_oechem.OESMILESFlag_Canonical_swigconstant(_oechem)
OESMILESFlag_Canonical = _oechem.OESMILESFlag_Canonical

_oechem.OESMILESFlag_Kekule_swigconstant(_oechem)
OESMILESFlag_Kekule = _oechem.OESMILESFlag_Kekule

_oechem.OESMILESFlag_SuperAtoms_swigconstant(_oechem)
OESMILESFlag_SuperAtoms = _oechem.OESMILESFlag_SuperAtoms

_oechem.OESMILESFlag_ExtBonds_swigconstant(_oechem)
OESMILESFlag_ExtBonds = _oechem.OESMILESFlag_ExtBonds

_oechem.OESMILESFlag_ImpHCount_swigconstant(_oechem)
OESMILESFlag_ImpHCount = _oechem.OESMILESFlag_ImpHCount

_oechem.OESMILESFlag_AllBonds_swigconstant(_oechem)
OESMILESFlag_AllBonds = _oechem.OESMILESFlag_AllBonds

_oechem.OESMILESFlag_DEFAULT_swigconstant(_oechem)
OESMILESFlag_DEFAULT = _oechem.OESMILESFlag_DEFAULT

_oechem.OESMILESFlag_ISOMERIC_swigconstant(_oechem)
OESMILESFlag_ISOMERIC = _oechem.OESMILESFlag_ISOMERIC

_oechem.OENormType_Undefined_swigconstant(_oechem)
OENormType_Undefined = _oechem.OENormType_Undefined

_oechem.OENormType_TableLen_swigconstant(_oechem)
OENormType_TableLen = _oechem.OENormType_TableLen

_oechem.OENormType_Azide_swigconstant(_oechem)
OENormType_Azide = _oechem.OENormType_Azide

_oechem.OENormType_Carboxylate_swigconstant(_oechem)
OENormType_Carboxylate = _oechem.OENormType_Carboxylate

_oechem.OENormType_Nitro_swigconstant(_oechem)
OENormType_Nitro = _oechem.OENormType_Nitro

_oechem.OENormType_Noxide_swigconstant(_oechem)
OENormType_Noxide = _oechem.OENormType_Noxide

_oechem.OENormType_Phosphate_swigconstant(_oechem)
OENormType_Phosphate = _oechem.OENormType_Phosphate

_oechem.OENormType_Sulfate_swigconstant(_oechem)
OENormType_Sulfate = _oechem.OENormType_Sulfate

_oechem.OENormType_Hydrogens_swigconstant(_oechem)
OENormType_Hydrogens = _oechem.OENormType_Hydrogens

_oechem.OENormType_MAXTYPE_swigconstant(_oechem)
OENormType_MAXTYPE = _oechem.OENormType_MAXTYPE

_oechem.OEBinaryOpts_Readers_swigconstant(_oechem)
OEBinaryOpts_Readers = _oechem.OEBinaryOpts_Readers

_oechem.OEBinaryOpts_Writers_swigconstant(_oechem)
OEBinaryOpts_Writers = _oechem.OEBinaryOpts_Writers

_oechem.OEBinaryOpts_OEBase_swigconstant(_oechem)
OEBinaryOpts_OEBase = _oechem.OEBinaryOpts_OEBase

_oechem.OEBinaryOpts_OEMolBase_swigconstant(_oechem)
OEBinaryOpts_OEMolBase = _oechem.OEBinaryOpts_OEMolBase

_oechem.OEBinaryOpts_OEMCMolBase_swigconstant(_oechem)
OEBinaryOpts_OEMCMolBase = _oechem.OEBinaryOpts_OEMCMolBase

_oechem.OEBinaryOpts_OEQMol_swigconstant(_oechem)
OEBinaryOpts_OEQMol = _oechem.OEBinaryOpts_OEQMol

_oechem.OEBinaryOpts_GZipCompress_swigconstant(_oechem)
OEBinaryOpts_GZipCompress = _oechem.OEBinaryOpts_GZipCompress

_oechem.OEBinaryOpts_RotCompress_swigconstant(_oechem)
OEBinaryOpts_RotCompress = _oechem.OEBinaryOpts_RotCompress

_oechem.OEBinaryOpts_OEMolAtomIntType_swigconstant(_oechem)
OEBinaryOpts_OEMolAtomIntType = _oechem.OEBinaryOpts_OEMolAtomIntType

_oechem.OEBinaryOpts_OEMolBondIntType_swigconstant(_oechem)
OEBinaryOpts_OEMolBondIntType = _oechem.OEBinaryOpts_OEMolBondIntType

_oechem.OEBinaryOpts_IntGrid_swigconstant(_oechem)
OEBinaryOpts_IntGrid = _oechem.OEBinaryOpts_IntGrid

_oechem.OEBinaryOpts_IntMultiGrid_swigconstant(_oechem)
OEBinaryOpts_IntMultiGrid = _oechem.OEBinaryOpts_IntMultiGrid

_oechem.OEBinaryOpts_FloatGrid_swigconstant(_oechem)
OEBinaryOpts_FloatGrid = _oechem.OEBinaryOpts_FloatGrid

_oechem.OEBinaryOpts_FloatMultiGrid_swigconstant(_oechem)
OEBinaryOpts_FloatMultiGrid = _oechem.OEBinaryOpts_FloatMultiGrid

_oechem.OEBinaryOpts_FloatFixedMultiGrid_swigconstant(_oechem)
OEBinaryOpts_FloatFixedMultiGrid = _oechem.OEBinaryOpts_FloatFixedMultiGrid

_oechem.OEBinaryOpts_CompressedConfTorsions_swigconstant(_oechem)
OEBinaryOpts_CompressedConfTorsions = _oechem.OEBinaryOpts_CompressedConfTorsions

_oechem.OESmartsParseOpts_None_swigconstant(_oechem)
OESmartsParseOpts_None = _oechem.OESmartsParseOpts_None

_oechem.OESmartsParseOpts_RingConstraint_swigconstant(_oechem)
OESmartsParseOpts_RingConstraint = _oechem.OESmartsParseOpts_RingConstraint

OESmartsParseOpts_Default = OESmartsParseOpts_RingConstraint


_oechem.OEResidueIndex_ALA_swigconstant(_oechem)
OEResidueIndex_ALA = _oechem.OEResidueIndex_ALA

_oechem.OEResidueIndex_ARG_swigconstant(_oechem)
OEResidueIndex_ARG = _oechem.OEResidueIndex_ARG

_oechem.OEResidueIndex_ASN_swigconstant(_oechem)
OEResidueIndex_ASN = _oechem.OEResidueIndex_ASN

_oechem.OEResidueIndex_ASP_swigconstant(_oechem)
OEResidueIndex_ASP = _oechem.OEResidueIndex_ASP

_oechem.OEResidueIndex_CYS_swigconstant(_oechem)
OEResidueIndex_CYS = _oechem.OEResidueIndex_CYS

_oechem.OEResidueIndex_GLN_swigconstant(_oechem)
OEResidueIndex_GLN = _oechem.OEResidueIndex_GLN

_oechem.OEResidueIndex_GLU_swigconstant(_oechem)
OEResidueIndex_GLU = _oechem.OEResidueIndex_GLU

_oechem.OEResidueIndex_GLY_swigconstant(_oechem)
OEResidueIndex_GLY = _oechem.OEResidueIndex_GLY

_oechem.OEResidueIndex_HIS_swigconstant(_oechem)
OEResidueIndex_HIS = _oechem.OEResidueIndex_HIS

_oechem.OEResidueIndex_ILE_swigconstant(_oechem)
OEResidueIndex_ILE = _oechem.OEResidueIndex_ILE

_oechem.OEResidueIndex_LEU_swigconstant(_oechem)
OEResidueIndex_LEU = _oechem.OEResidueIndex_LEU

_oechem.OEResidueIndex_LYS_swigconstant(_oechem)
OEResidueIndex_LYS = _oechem.OEResidueIndex_LYS

_oechem.OEResidueIndex_MET_swigconstant(_oechem)
OEResidueIndex_MET = _oechem.OEResidueIndex_MET

_oechem.OEResidueIndex_PHE_swigconstant(_oechem)
OEResidueIndex_PHE = _oechem.OEResidueIndex_PHE

_oechem.OEResidueIndex_PRO_swigconstant(_oechem)
OEResidueIndex_PRO = _oechem.OEResidueIndex_PRO

_oechem.OEResidueIndex_SER_swigconstant(_oechem)
OEResidueIndex_SER = _oechem.OEResidueIndex_SER

_oechem.OEResidueIndex_THR_swigconstant(_oechem)
OEResidueIndex_THR = _oechem.OEResidueIndex_THR

_oechem.OEResidueIndex_TRP_swigconstant(_oechem)
OEResidueIndex_TRP = _oechem.OEResidueIndex_TRP

_oechem.OEResidueIndex_TYR_swigconstant(_oechem)
OEResidueIndex_TYR = _oechem.OEResidueIndex_TYR

_oechem.OEResidueIndex_VAL_swigconstant(_oechem)
OEResidueIndex_VAL = _oechem.OEResidueIndex_VAL

_oechem.OEResidueIndex_UNK_swigconstant(_oechem)
OEResidueIndex_UNK = _oechem.OEResidueIndex_UNK

_oechem.OEResidueIndex_ASX_swigconstant(_oechem)
OEResidueIndex_ASX = _oechem.OEResidueIndex_ASX

_oechem.OEResidueIndex_GLX_swigconstant(_oechem)
OEResidueIndex_GLX = _oechem.OEResidueIndex_GLX

_oechem.OEResidueIndex_ASH_swigconstant(_oechem)
OEResidueIndex_ASH = _oechem.OEResidueIndex_ASH

_oechem.OEResidueIndex_CYX_swigconstant(_oechem)
OEResidueIndex_CYX = _oechem.OEResidueIndex_CYX

_oechem.OEResidueIndex_CYH_swigconstant(_oechem)
OEResidueIndex_CYH = _oechem.OEResidueIndex_CYH

_oechem.OEResidueIndex_CYM_swigconstant(_oechem)
OEResidueIndex_CYM = _oechem.OEResidueIndex_CYM

_oechem.OEResidueIndex_GLH_swigconstant(_oechem)
OEResidueIndex_GLH = _oechem.OEResidueIndex_GLH

_oechem.OEResidueIndex_HID_swigconstant(_oechem)
OEResidueIndex_HID = _oechem.OEResidueIndex_HID

_oechem.OEResidueIndex_HIE_swigconstant(_oechem)
OEResidueIndex_HIE = _oechem.OEResidueIndex_HIE

_oechem.OEResidueIndex_HIP_swigconstant(_oechem)
OEResidueIndex_HIP = _oechem.OEResidueIndex_HIP

_oechem.OEResidueIndex_LYN_swigconstant(_oechem)
OEResidueIndex_LYN = _oechem.OEResidueIndex_LYN

_oechem.OEResidueIndex_TYM_swigconstant(_oechem)
OEResidueIndex_TYM = _oechem.OEResidueIndex_TYM

_oechem.OEResidueIndex_A_swigconstant(_oechem)
OEResidueIndex_A = _oechem.OEResidueIndex_A

_oechem.OEResidueIndex_C_swigconstant(_oechem)
OEResidueIndex_C = _oechem.OEResidueIndex_C

_oechem.OEResidueIndex_G_swigconstant(_oechem)
OEResidueIndex_G = _oechem.OEResidueIndex_G

_oechem.OEResidueIndex_I_swigconstant(_oechem)
OEResidueIndex_I = _oechem.OEResidueIndex_I

_oechem.OEResidueIndex_T_swigconstant(_oechem)
OEResidueIndex_T = _oechem.OEResidueIndex_T

_oechem.OEResidueIndex_U_swigconstant(_oechem)
OEResidueIndex_U = _oechem.OEResidueIndex_U

_oechem.OEResidueIndex_DA_swigconstant(_oechem)
OEResidueIndex_DA = _oechem.OEResidueIndex_DA

_oechem.OEResidueIndex_DC_swigconstant(_oechem)
OEResidueIndex_DC = _oechem.OEResidueIndex_DC

_oechem.OEResidueIndex_DG_swigconstant(_oechem)
OEResidueIndex_DG = _oechem.OEResidueIndex_DG

_oechem.OEResidueIndex_DI_swigconstant(_oechem)
OEResidueIndex_DI = _oechem.OEResidueIndex_DI

_oechem.OEResidueIndex_DT_swigconstant(_oechem)
OEResidueIndex_DT = _oechem.OEResidueIndex_DT

_oechem.OEResidueIndex_DU_swigconstant(_oechem)
OEResidueIndex_DU = _oechem.OEResidueIndex_DU

_oechem.OEResidueIndex__1MA_swigconstant(_oechem)
OEResidueIndex__1MA = _oechem.OEResidueIndex__1MA

_oechem.OEResidueIndex__2MG_swigconstant(_oechem)
OEResidueIndex__2MG = _oechem.OEResidueIndex__2MG

_oechem.OEResidueIndex__5MC_swigconstant(_oechem)
OEResidueIndex__5MC = _oechem.OEResidueIndex__5MC

_oechem.OEResidueIndex__5MU_swigconstant(_oechem)
OEResidueIndex__5MU = _oechem.OEResidueIndex__5MU

_oechem.OEResidueIndex__7MG_swigconstant(_oechem)
OEResidueIndex__7MG = _oechem.OEResidueIndex__7MG

_oechem.OEResidueIndex_H2U_swigconstant(_oechem)
OEResidueIndex_H2U = _oechem.OEResidueIndex_H2U

_oechem.OEResidueIndex_M2G_swigconstant(_oechem)
OEResidueIndex_M2G = _oechem.OEResidueIndex_M2G

_oechem.OEResidueIndex_OMC_swigconstant(_oechem)
OEResidueIndex_OMC = _oechem.OEResidueIndex_OMC

_oechem.OEResidueIndex_OMG_swigconstant(_oechem)
OEResidueIndex_OMG = _oechem.OEResidueIndex_OMG

_oechem.OEResidueIndex_PSU_swigconstant(_oechem)
OEResidueIndex_PSU = _oechem.OEResidueIndex_PSU

_oechem.OEResidueIndex_YG_swigconstant(_oechem)
OEResidueIndex_YG = _oechem.OEResidueIndex_YG

_oechem.OEResidueIndex_ABA_swigconstant(_oechem)
OEResidueIndex_ABA = _oechem.OEResidueIndex_ABA

_oechem.OEResidueIndex_ACE_swigconstant(_oechem)
OEResidueIndex_ACE = _oechem.OEResidueIndex_ACE

_oechem.OEResidueIndex_CGU_swigconstant(_oechem)
OEResidueIndex_CGU = _oechem.OEResidueIndex_CGU

_oechem.OEResidueIndex_CME_swigconstant(_oechem)
OEResidueIndex_CME = _oechem.OEResidueIndex_CME

_oechem.OEResidueIndex_CSD_swigconstant(_oechem)
OEResidueIndex_CSD = _oechem.OEResidueIndex_CSD

_oechem.OEResidueIndex_FOR_swigconstant(_oechem)
OEResidueIndex_FOR = _oechem.OEResidueIndex_FOR

_oechem.OEResidueIndex_HSE_swigconstant(_oechem)
OEResidueIndex_HSE = _oechem.OEResidueIndex_HSE

_oechem.OEResidueIndex_HYP_swigconstant(_oechem)
OEResidueIndex_HYP = _oechem.OEResidueIndex_HYP

_oechem.OEResidueIndex_HYL_swigconstant(_oechem)
OEResidueIndex_HYL = _oechem.OEResidueIndex_HYL

_oechem.OEResidueIndex_LYZ_swigconstant(_oechem)
OEResidueIndex_LYZ = _oechem.OEResidueIndex_LYZ

_oechem.OEResidueIndex_MEN_swigconstant(_oechem)
OEResidueIndex_MEN = _oechem.OEResidueIndex_MEN

_oechem.OEResidueIndex_MLE_swigconstant(_oechem)
OEResidueIndex_MLE = _oechem.OEResidueIndex_MLE

_oechem.OEResidueIndex_MLY_swigconstant(_oechem)
OEResidueIndex_MLY = _oechem.OEResidueIndex_MLY

_oechem.OEResidueIndex_MSE_swigconstant(_oechem)
OEResidueIndex_MSE = _oechem.OEResidueIndex_MSE

_oechem.OEResidueIndex_ORN_swigconstant(_oechem)
OEResidueIndex_ORN = _oechem.OEResidueIndex_ORN

_oechem.OEResidueIndex_PCA_swigconstant(_oechem)
OEResidueIndex_PCA = _oechem.OEResidueIndex_PCA

_oechem.OEResidueIndex_PTR_swigconstant(_oechem)
OEResidueIndex_PTR = _oechem.OEResidueIndex_PTR

_oechem.OEResidueIndex_SAR_swigconstant(_oechem)
OEResidueIndex_SAR = _oechem.OEResidueIndex_SAR

_oechem.OEResidueIndex_SEP_swigconstant(_oechem)
OEResidueIndex_SEP = _oechem.OEResidueIndex_SEP

_oechem.OEResidueIndex_TAU_swigconstant(_oechem)
OEResidueIndex_TAU = _oechem.OEResidueIndex_TAU

_oechem.OEResidueIndex_TPO_swigconstant(_oechem)
OEResidueIndex_TPO = _oechem.OEResidueIndex_TPO

_oechem.OEResidueIndex_LIG_swigconstant(_oechem)
OEResidueIndex_LIG = _oechem.OEResidueIndex_LIG

_oechem.OEResidueIndex_MOL_swigconstant(_oechem)
OEResidueIndex_MOL = _oechem.OEResidueIndex_MOL

_oechem.OEResidueIndex_UNL_swigconstant(_oechem)
OEResidueIndex_UNL = _oechem.OEResidueIndex_UNL

_oechem.OEResidueIndex_BR_swigconstant(_oechem)
OEResidueIndex_BR = _oechem.OEResidueIndex_BR

_oechem.OEResidueIndex_CL_swigconstant(_oechem)
OEResidueIndex_CL = _oechem.OEResidueIndex_CL

_oechem.OEResidueIndex_ADP_swigconstant(_oechem)
OEResidueIndex_ADP = _oechem.OEResidueIndex_ADP

_oechem.OEResidueIndex_AF3_swigconstant(_oechem)
OEResidueIndex_AF3 = _oechem.OEResidueIndex_AF3

_oechem.OEResidueIndex_ALF_swigconstant(_oechem)
OEResidueIndex_ALF = _oechem.OEResidueIndex_ALF

_oechem.OEResidueIndex_ATP_swigconstant(_oechem)
OEResidueIndex_ATP = _oechem.OEResidueIndex_ATP

_oechem.OEResidueIndex_BME_swigconstant(_oechem)
OEResidueIndex_BME = _oechem.OEResidueIndex_BME

_oechem.OEResidueIndex_DMS_swigconstant(_oechem)
OEResidueIndex_DMS = _oechem.OEResidueIndex_DMS

_oechem.OEResidueIndex_EDO_swigconstant(_oechem)
OEResidueIndex_EDO = _oechem.OEResidueIndex_EDO

_oechem.OEResidueIndex_EOH_swigconstant(_oechem)
OEResidueIndex_EOH = _oechem.OEResidueIndex_EOH

_oechem.OEResidueIndex_FAD_swigconstant(_oechem)
OEResidueIndex_FAD = _oechem.OEResidueIndex_FAD

_oechem.OEResidueIndex_GOL_swigconstant(_oechem)
OEResidueIndex_GOL = _oechem.OEResidueIndex_GOL

_oechem.OEResidueIndex_HEM_swigconstant(_oechem)
OEResidueIndex_HEM = _oechem.OEResidueIndex_HEM

_oechem.OEResidueIndex_HOH_swigconstant(_oechem)
OEResidueIndex_HOH = _oechem.OEResidueIndex_HOH

_oechem.OEResidueIndex_IOD_swigconstant(_oechem)
OEResidueIndex_IOD = _oechem.OEResidueIndex_IOD

_oechem.OEResidueIndex_MOH_swigconstant(_oechem)
OEResidueIndex_MOH = _oechem.OEResidueIndex_MOH

_oechem.OEResidueIndex_NAD_swigconstant(_oechem)
OEResidueIndex_NAD = _oechem.OEResidueIndex_NAD

_oechem.OEResidueIndex_NAG_swigconstant(_oechem)
OEResidueIndex_NAG = _oechem.OEResidueIndex_NAG

_oechem.OEResidueIndex_PEO_swigconstant(_oechem)
OEResidueIndex_PEO = _oechem.OEResidueIndex_PEO

_oechem.OEResidueIndex_PER_swigconstant(_oechem)
OEResidueIndex_PER = _oechem.OEResidueIndex_PER

_oechem.OEResidueIndex_PO2_swigconstant(_oechem)
OEResidueIndex_PO2 = _oechem.OEResidueIndex_PO2

_oechem.OEResidueIndex_PO4_swigconstant(_oechem)
OEResidueIndex_PO4 = _oechem.OEResidueIndex_PO4

_oechem.OEResidueIndex_SO2_swigconstant(_oechem)
OEResidueIndex_SO2 = _oechem.OEResidueIndex_SO2

_oechem.OEResidueIndex_SO4_swigconstant(_oechem)
OEResidueIndex_SO4 = _oechem.OEResidueIndex_SO4

_oechem.OEResidueIndex_SX_swigconstant(_oechem)
OEResidueIndex_SX = _oechem.OEResidueIndex_SX

_oechem.OEResidueIndex_NME_swigconstant(_oechem)
OEResidueIndex_NME = _oechem.OEResidueIndex_NME

_oechem.OEResidueIndex_NHE_swigconstant(_oechem)
OEResidueIndex_NHE = _oechem.OEResidueIndex_NHE

_oechem.OEResidueIndex_CIP_swigconstant(_oechem)
OEResidueIndex_CIP = _oechem.OEResidueIndex_CIP

_oechem.OEResidueIndex_CIM_swigconstant(_oechem)
OEResidueIndex_CIM = _oechem.OEResidueIndex_CIM

_oechem.OEPDBAtomName_UNK_swigconstant(_oechem)
OEPDBAtomName_UNK = _oechem.OEPDBAtomName_UNK

_oechem.OEPDBAtomName_N_swigconstant(_oechem)
OEPDBAtomName_N = _oechem.OEPDBAtomName_N

_oechem.OEPDBAtomName_CA_swigconstant(_oechem)
OEPDBAtomName_CA = _oechem.OEPDBAtomName_CA

_oechem.OEPDBAtomName_C_swigconstant(_oechem)
OEPDBAtomName_C = _oechem.OEPDBAtomName_C

_oechem.OEPDBAtomName_O_swigconstant(_oechem)
OEPDBAtomName_O = _oechem.OEPDBAtomName_O

_oechem.OEPDBAtomName_CB_swigconstant(_oechem)
OEPDBAtomName_CB = _oechem.OEPDBAtomName_CB

_oechem.OEPDBAtomName_CG_swigconstant(_oechem)
OEPDBAtomName_CG = _oechem.OEPDBAtomName_CG

_oechem.OEPDBAtomName_OG_swigconstant(_oechem)
OEPDBAtomName_OG = _oechem.OEPDBAtomName_OG

_oechem.OEPDBAtomName_SG_swigconstant(_oechem)
OEPDBAtomName_SG = _oechem.OEPDBAtomName_SG

_oechem.OEPDBAtomName_CG1_swigconstant(_oechem)
OEPDBAtomName_CG1 = _oechem.OEPDBAtomName_CG1

_oechem.OEPDBAtomName_OG1_swigconstant(_oechem)
OEPDBAtomName_OG1 = _oechem.OEPDBAtomName_OG1

_oechem.OEPDBAtomName_CG2_swigconstant(_oechem)
OEPDBAtomName_CG2 = _oechem.OEPDBAtomName_CG2

_oechem.OEPDBAtomName_CD_swigconstant(_oechem)
OEPDBAtomName_CD = _oechem.OEPDBAtomName_CD

_oechem.OEPDBAtomName_OD_swigconstant(_oechem)
OEPDBAtomName_OD = _oechem.OEPDBAtomName_OD

_oechem.OEPDBAtomName_SD_swigconstant(_oechem)
OEPDBAtomName_SD = _oechem.OEPDBAtomName_SD

_oechem.OEPDBAtomName_CD1_swigconstant(_oechem)
OEPDBAtomName_CD1 = _oechem.OEPDBAtomName_CD1

_oechem.OEPDBAtomName_ND1_swigconstant(_oechem)
OEPDBAtomName_ND1 = _oechem.OEPDBAtomName_ND1

_oechem.OEPDBAtomName_OD1_swigconstant(_oechem)
OEPDBAtomName_OD1 = _oechem.OEPDBAtomName_OD1

_oechem.OEPDBAtomName_CD2_swigconstant(_oechem)
OEPDBAtomName_CD2 = _oechem.OEPDBAtomName_CD2

_oechem.OEPDBAtomName_ND2_swigconstant(_oechem)
OEPDBAtomName_ND2 = _oechem.OEPDBAtomName_ND2

_oechem.OEPDBAtomName_OD2_swigconstant(_oechem)
OEPDBAtomName_OD2 = _oechem.OEPDBAtomName_OD2

_oechem.OEPDBAtomName_SE__swigconstant(_oechem)
OEPDBAtomName_SE_ = _oechem.OEPDBAtomName_SE_

_oechem.OEPDBAtomName_CE_swigconstant(_oechem)
OEPDBAtomName_CE = _oechem.OEPDBAtomName_CE

_oechem.OEPDBAtomName_NE_swigconstant(_oechem)
OEPDBAtomName_NE = _oechem.OEPDBAtomName_NE

_oechem.OEPDBAtomName_OE_swigconstant(_oechem)
OEPDBAtomName_OE = _oechem.OEPDBAtomName_OE

_oechem.OEPDBAtomName_CE1_swigconstant(_oechem)
OEPDBAtomName_CE1 = _oechem.OEPDBAtomName_CE1

_oechem.OEPDBAtomName_NE1_swigconstant(_oechem)
OEPDBAtomName_NE1 = _oechem.OEPDBAtomName_NE1

_oechem.OEPDBAtomName_OE1_swigconstant(_oechem)
OEPDBAtomName_OE1 = _oechem.OEPDBAtomName_OE1

_oechem.OEPDBAtomName_CE2_swigconstant(_oechem)
OEPDBAtomName_CE2 = _oechem.OEPDBAtomName_CE2

_oechem.OEPDBAtomName_NE2_swigconstant(_oechem)
OEPDBAtomName_NE2 = _oechem.OEPDBAtomName_NE2

_oechem.OEPDBAtomName_OE2_swigconstant(_oechem)
OEPDBAtomName_OE2 = _oechem.OEPDBAtomName_OE2

_oechem.OEPDBAtomName_CE3_swigconstant(_oechem)
OEPDBAtomName_CE3 = _oechem.OEPDBAtomName_CE3

_oechem.OEPDBAtomName_OE3_swigconstant(_oechem)
OEPDBAtomName_OE3 = _oechem.OEPDBAtomName_OE3

_oechem.OEPDBAtomName_OE4_swigconstant(_oechem)
OEPDBAtomName_OE4 = _oechem.OEPDBAtomName_OE4

_oechem.OEPDBAtomName_CZ_swigconstant(_oechem)
OEPDBAtomName_CZ = _oechem.OEPDBAtomName_CZ

_oechem.OEPDBAtomName_NZ_swigconstant(_oechem)
OEPDBAtomName_NZ = _oechem.OEPDBAtomName_NZ

_oechem.OEPDBAtomName_CZ2_swigconstant(_oechem)
OEPDBAtomName_CZ2 = _oechem.OEPDBAtomName_CZ2

_oechem.OEPDBAtomName_CZ3_swigconstant(_oechem)
OEPDBAtomName_CZ3 = _oechem.OEPDBAtomName_CZ3

_oechem.OEPDBAtomName_OH_swigconstant(_oechem)
OEPDBAtomName_OH = _oechem.OEPDBAtomName_OH

_oechem.OEPDBAtomName_CH1_swigconstant(_oechem)
OEPDBAtomName_CH1 = _oechem.OEPDBAtomName_CH1

_oechem.OEPDBAtomName_NH1_swigconstant(_oechem)
OEPDBAtomName_NH1 = _oechem.OEPDBAtomName_NH1

_oechem.OEPDBAtomName_CH2_swigconstant(_oechem)
OEPDBAtomName_CH2 = _oechem.OEPDBAtomName_CH2

_oechem.OEPDBAtomName_NH2_swigconstant(_oechem)
OEPDBAtomName_NH2 = _oechem.OEPDBAtomName_NH2

_oechem.OEPDBAtomName_CH3_swigconstant(_oechem)
OEPDBAtomName_CH3 = _oechem.OEPDBAtomName_CH3

_oechem.OEPDBAtomName_OXT_swigconstant(_oechem)
OEPDBAtomName_OXT = _oechem.OEPDBAtomName_OXT

_oechem.OEPDBAtomName_P_swigconstant(_oechem)
OEPDBAtomName_P = _oechem.OEPDBAtomName_P

_oechem.OEPDBAtomName_O1P_swigconstant(_oechem)
OEPDBAtomName_O1P = _oechem.OEPDBAtomName_O1P

_oechem.OEPDBAtomName_O2P_swigconstant(_oechem)
OEPDBAtomName_O2P = _oechem.OEPDBAtomName_O2P

_oechem.OEPDBAtomName_O5__swigconstant(_oechem)
OEPDBAtomName_O5_ = _oechem.OEPDBAtomName_O5_

_oechem.OEPDBAtomName_C5__swigconstant(_oechem)
OEPDBAtomName_C5_ = _oechem.OEPDBAtomName_C5_

_oechem.OEPDBAtomName_C4__swigconstant(_oechem)
OEPDBAtomName_C4_ = _oechem.OEPDBAtomName_C4_

_oechem.OEPDBAtomName_O4__swigconstant(_oechem)
OEPDBAtomName_O4_ = _oechem.OEPDBAtomName_O4_

_oechem.OEPDBAtomName_C3__swigconstant(_oechem)
OEPDBAtomName_C3_ = _oechem.OEPDBAtomName_C3_

_oechem.OEPDBAtomName_O3__swigconstant(_oechem)
OEPDBAtomName_O3_ = _oechem.OEPDBAtomName_O3_

_oechem.OEPDBAtomName_C2__swigconstant(_oechem)
OEPDBAtomName_C2_ = _oechem.OEPDBAtomName_C2_

_oechem.OEPDBAtomName_O2__swigconstant(_oechem)
OEPDBAtomName_O2_ = _oechem.OEPDBAtomName_O2_

_oechem.OEPDBAtomName_C2A_swigconstant(_oechem)
OEPDBAtomName_C2A = _oechem.OEPDBAtomName_C2A

_oechem.OEPDBAtomName_C1__swigconstant(_oechem)
OEPDBAtomName_C1_ = _oechem.OEPDBAtomName_C1_

_oechem.OEPDBAtomName_N9_swigconstant(_oechem)
OEPDBAtomName_N9 = _oechem.OEPDBAtomName_N9

_oechem.OEPDBAtomName_C8_swigconstant(_oechem)
OEPDBAtomName_C8 = _oechem.OEPDBAtomName_C8

_oechem.OEPDBAtomName_N7_swigconstant(_oechem)
OEPDBAtomName_N7 = _oechem.OEPDBAtomName_N7

_oechem.OEPDBAtomName_C5_swigconstant(_oechem)
OEPDBAtomName_C5 = _oechem.OEPDBAtomName_C5

_oechem.OEPDBAtomName_C6_swigconstant(_oechem)
OEPDBAtomName_C6 = _oechem.OEPDBAtomName_C6

_oechem.OEPDBAtomName_O6_swigconstant(_oechem)
OEPDBAtomName_O6 = _oechem.OEPDBAtomName_O6

_oechem.OEPDBAtomName_N6_swigconstant(_oechem)
OEPDBAtomName_N6 = _oechem.OEPDBAtomName_N6

_oechem.OEPDBAtomName_N1_swigconstant(_oechem)
OEPDBAtomName_N1 = _oechem.OEPDBAtomName_N1

_oechem.OEPDBAtomName_C2_swigconstant(_oechem)
OEPDBAtomName_C2 = _oechem.OEPDBAtomName_C2

_oechem.OEPDBAtomName_O2_swigconstant(_oechem)
OEPDBAtomName_O2 = _oechem.OEPDBAtomName_O2

_oechem.OEPDBAtomName_N2_swigconstant(_oechem)
OEPDBAtomName_N2 = _oechem.OEPDBAtomName_N2

_oechem.OEPDBAtomName_CM5_swigconstant(_oechem)
OEPDBAtomName_CM5 = _oechem.OEPDBAtomName_CM5

_oechem.OEPDBAtomName_N3_swigconstant(_oechem)
OEPDBAtomName_N3 = _oechem.OEPDBAtomName_N3

_oechem.OEPDBAtomName_C3_swigconstant(_oechem)
OEPDBAtomName_C3 = _oechem.OEPDBAtomName_C3

_oechem.OEPDBAtomName_C4_swigconstant(_oechem)
OEPDBAtomName_C4 = _oechem.OEPDBAtomName_C4

_oechem.OEPDBAtomName_O4_swigconstant(_oechem)
OEPDBAtomName_O4 = _oechem.OEPDBAtomName_O4

_oechem.OEPDBAtomName_N4_swigconstant(_oechem)
OEPDBAtomName_N4 = _oechem.OEPDBAtomName_N4

_oechem.OEPDBAtomName_CM7_swigconstant(_oechem)
OEPDBAtomName_CM7 = _oechem.OEPDBAtomName_CM7

_oechem.OEPDBAtomName_C5M_swigconstant(_oechem)
OEPDBAtomName_C5M = _oechem.OEPDBAtomName_C5M

_oechem.OEPDBAtomName_O3P_swigconstant(_oechem)
OEPDBAtomName_O3P = _oechem.OEPDBAtomName_O3P

_oechem.OEPDBAtomName_CM1_swigconstant(_oechem)
OEPDBAtomName_CM1 = _oechem.OEPDBAtomName_CM1

_oechem.OEPDBAtomName_CM2_swigconstant(_oechem)
OEPDBAtomName_CM2 = _oechem.OEPDBAtomName_CM2

_oechem.OEPDBAtomName_C10_swigconstant(_oechem)
OEPDBAtomName_C10 = _oechem.OEPDBAtomName_C10

_oechem.OEPDBAtomName_C11_swigconstant(_oechem)
OEPDBAtomName_C11 = _oechem.OEPDBAtomName_C11

_oechem.OEPDBAtomName_C12_swigconstant(_oechem)
OEPDBAtomName_C12 = _oechem.OEPDBAtomName_C12

_oechem.OEPDBAtomName_C13_swigconstant(_oechem)
OEPDBAtomName_C13 = _oechem.OEPDBAtomName_C13

_oechem.OEPDBAtomName_C14_swigconstant(_oechem)
OEPDBAtomName_C14 = _oechem.OEPDBAtomName_C14

_oechem.OEPDBAtomName_C15_swigconstant(_oechem)
OEPDBAtomName_C15 = _oechem.OEPDBAtomName_C15

_oechem.OEPDBAtomName_C16_swigconstant(_oechem)
OEPDBAtomName_C16 = _oechem.OEPDBAtomName_C16

_oechem.OEPDBAtomName_O17_swigconstant(_oechem)
OEPDBAtomName_O17 = _oechem.OEPDBAtomName_O17

_oechem.OEPDBAtomName_O18_swigconstant(_oechem)
OEPDBAtomName_O18 = _oechem.OEPDBAtomName_O18

_oechem.OEPDBAtomName_C19_swigconstant(_oechem)
OEPDBAtomName_C19 = _oechem.OEPDBAtomName_C19

_oechem.OEPDBAtomName_N20_swigconstant(_oechem)
OEPDBAtomName_N20 = _oechem.OEPDBAtomName_N20

_oechem.OEPDBAtomName_C21_swigconstant(_oechem)
OEPDBAtomName_C21 = _oechem.OEPDBAtomName_C21

_oechem.OEPDBAtomName_O22_swigconstant(_oechem)
OEPDBAtomName_O22 = _oechem.OEPDBAtomName_O22

_oechem.OEPDBAtomName_O23_swigconstant(_oechem)
OEPDBAtomName_O23 = _oechem.OEPDBAtomName_O23

_oechem.OEPDBAtomName_C24_swigconstant(_oechem)
OEPDBAtomName_C24 = _oechem.OEPDBAtomName_C24

_oechem.OEPDBAtomName_Cprev_swigconstant(_oechem)
OEPDBAtomName_Cprev = _oechem.OEPDBAtomName_Cprev

_oechem.OEPDBAtomName_Nnext_swigconstant(_oechem)
OEPDBAtomName_Nnext = _oechem.OEPDBAtomName_Nnext

_oechem.OEPDBAtomName_CAnext_swigconstant(_oechem)
OEPDBAtomName_CAnext = _oechem.OEPDBAtomName_CAnext

_oechem.OEPDBAtomName_H_swigconstant(_oechem)
OEPDBAtomName_H = _oechem.OEPDBAtomName_H

_oechem.OEPDBAtomName_H1_swigconstant(_oechem)
OEPDBAtomName_H1 = _oechem.OEPDBAtomName_H1

_oechem.OEPDBAtomName_H2_swigconstant(_oechem)
OEPDBAtomName_H2 = _oechem.OEPDBAtomName_H2

_oechem.OEPDBAtomName_H3_swigconstant(_oechem)
OEPDBAtomName_H3 = _oechem.OEPDBAtomName_H3

_oechem.OEPDBAtomName_HA_swigconstant(_oechem)
OEPDBAtomName_HA = _oechem.OEPDBAtomName_HA

_oechem.OEPDBAtomName_HA2_swigconstant(_oechem)
OEPDBAtomName_HA2 = _oechem.OEPDBAtomName_HA2

_oechem.OEPDBAtomName_HA3_swigconstant(_oechem)
OEPDBAtomName_HA3 = _oechem.OEPDBAtomName_HA3

_oechem.OEPDBAtomName_HB_swigconstant(_oechem)
OEPDBAtomName_HB = _oechem.OEPDBAtomName_HB

_oechem.OEPDBAtomName_HB1_swigconstant(_oechem)
OEPDBAtomName_HB1 = _oechem.OEPDBAtomName_HB1

_oechem.OEPDBAtomName_HB2_swigconstant(_oechem)
OEPDBAtomName_HB2 = _oechem.OEPDBAtomName_HB2

_oechem.OEPDBAtomName_HB3_swigconstant(_oechem)
OEPDBAtomName_HB3 = _oechem.OEPDBAtomName_HB3

_oechem.OEPDBAtomName_HG_swigconstant(_oechem)
OEPDBAtomName_HG = _oechem.OEPDBAtomName_HG

_oechem.OEPDBAtomName_HG1_swigconstant(_oechem)
OEPDBAtomName_HG1 = _oechem.OEPDBAtomName_HG1

_oechem.OEPDBAtomName_HG2_swigconstant(_oechem)
OEPDBAtomName_HG2 = _oechem.OEPDBAtomName_HG2

_oechem.OEPDBAtomName_HG3_swigconstant(_oechem)
OEPDBAtomName_HG3 = _oechem.OEPDBAtomName_HG3

_oechem.OEPDBAtomName_HG11_swigconstant(_oechem)
OEPDBAtomName_HG11 = _oechem.OEPDBAtomName_HG11

_oechem.OEPDBAtomName_HG12_swigconstant(_oechem)
OEPDBAtomName_HG12 = _oechem.OEPDBAtomName_HG12

_oechem.OEPDBAtomName_HG13_swigconstant(_oechem)
OEPDBAtomName_HG13 = _oechem.OEPDBAtomName_HG13

_oechem.OEPDBAtomName_HG21_swigconstant(_oechem)
OEPDBAtomName_HG21 = _oechem.OEPDBAtomName_HG21

_oechem.OEPDBAtomName_HG22_swigconstant(_oechem)
OEPDBAtomName_HG22 = _oechem.OEPDBAtomName_HG22

_oechem.OEPDBAtomName_HG23_swigconstant(_oechem)
OEPDBAtomName_HG23 = _oechem.OEPDBAtomName_HG23

_oechem.OEPDBAtomName_HD_swigconstant(_oechem)
OEPDBAtomName_HD = _oechem.OEPDBAtomName_HD

_oechem.OEPDBAtomName_HD1_swigconstant(_oechem)
OEPDBAtomName_HD1 = _oechem.OEPDBAtomName_HD1

_oechem.OEPDBAtomName_HD2_swigconstant(_oechem)
OEPDBAtomName_HD2 = _oechem.OEPDBAtomName_HD2

_oechem.OEPDBAtomName_HD3_swigconstant(_oechem)
OEPDBAtomName_HD3 = _oechem.OEPDBAtomName_HD3

_oechem.OEPDBAtomName_HD11_swigconstant(_oechem)
OEPDBAtomName_HD11 = _oechem.OEPDBAtomName_HD11

_oechem.OEPDBAtomName_HD12_swigconstant(_oechem)
OEPDBAtomName_HD12 = _oechem.OEPDBAtomName_HD12

_oechem.OEPDBAtomName_HD13_swigconstant(_oechem)
OEPDBAtomName_HD13 = _oechem.OEPDBAtomName_HD13

_oechem.OEPDBAtomName_HD21_swigconstant(_oechem)
OEPDBAtomName_HD21 = _oechem.OEPDBAtomName_HD21

_oechem.OEPDBAtomName_HD22_swigconstant(_oechem)
OEPDBAtomName_HD22 = _oechem.OEPDBAtomName_HD22

_oechem.OEPDBAtomName_HD23_swigconstant(_oechem)
OEPDBAtomName_HD23 = _oechem.OEPDBAtomName_HD23

_oechem.OEPDBAtomName_HE_swigconstant(_oechem)
OEPDBAtomName_HE = _oechem.OEPDBAtomName_HE

_oechem.OEPDBAtomName_HE1_swigconstant(_oechem)
OEPDBAtomName_HE1 = _oechem.OEPDBAtomName_HE1

_oechem.OEPDBAtomName_HE2_swigconstant(_oechem)
OEPDBAtomName_HE2 = _oechem.OEPDBAtomName_HE2

_oechem.OEPDBAtomName_HE3_swigconstant(_oechem)
OEPDBAtomName_HE3 = _oechem.OEPDBAtomName_HE3

_oechem.OEPDBAtomName_HE11_swigconstant(_oechem)
OEPDBAtomName_HE11 = _oechem.OEPDBAtomName_HE11

_oechem.OEPDBAtomName_HE12_swigconstant(_oechem)
OEPDBAtomName_HE12 = _oechem.OEPDBAtomName_HE12

_oechem.OEPDBAtomName_HE21_swigconstant(_oechem)
OEPDBAtomName_HE21 = _oechem.OEPDBAtomName_HE21

_oechem.OEPDBAtomName_HE22_swigconstant(_oechem)
OEPDBAtomName_HE22 = _oechem.OEPDBAtomName_HE22

_oechem.OEPDBAtomName_HZ_swigconstant(_oechem)
OEPDBAtomName_HZ = _oechem.OEPDBAtomName_HZ

_oechem.OEPDBAtomName_HZ1_swigconstant(_oechem)
OEPDBAtomName_HZ1 = _oechem.OEPDBAtomName_HZ1

_oechem.OEPDBAtomName_HZ2_swigconstant(_oechem)
OEPDBAtomName_HZ2 = _oechem.OEPDBAtomName_HZ2

_oechem.OEPDBAtomName_HZ3_swigconstant(_oechem)
OEPDBAtomName_HZ3 = _oechem.OEPDBAtomName_HZ3

_oechem.OEPDBAtomName_HH_swigconstant(_oechem)
OEPDBAtomName_HH = _oechem.OEPDBAtomName_HH

_oechem.OEPDBAtomName_HH2_swigconstant(_oechem)
OEPDBAtomName_HH2 = _oechem.OEPDBAtomName_HH2

_oechem.OEPDBAtomName_HH11_swigconstant(_oechem)
OEPDBAtomName_HH11 = _oechem.OEPDBAtomName_HH11

_oechem.OEPDBAtomName_HH12_swigconstant(_oechem)
OEPDBAtomName_HH12 = _oechem.OEPDBAtomName_HH12

_oechem.OEPDBAtomName_HH21_swigconstant(_oechem)
OEPDBAtomName_HH21 = _oechem.OEPDBAtomName_HH21

_oechem.OEPDBAtomName_HH22_swigconstant(_oechem)
OEPDBAtomName_HH22 = _oechem.OEPDBAtomName_HH22

_oechem.OEPDBAtomName_HH31_swigconstant(_oechem)
OEPDBAtomName_HH31 = _oechem.OEPDBAtomName_HH31

_oechem.OEPDBAtomName_HH32_swigconstant(_oechem)
OEPDBAtomName_HH32 = _oechem.OEPDBAtomName_HH32

_oechem.OEPDBAtomName_HH33_swigconstant(_oechem)
OEPDBAtomName_HH33 = _oechem.OEPDBAtomName_HH33

_oechem.OEPDBAtomName_HN1_swigconstant(_oechem)
OEPDBAtomName_HN1 = _oechem.OEPDBAtomName_HN1

_oechem.OEPDBAtomName_HN2_swigconstant(_oechem)
OEPDBAtomName_HN2 = _oechem.OEPDBAtomName_HN2

_oechem.OEPDBAtomName_Hpr_swigconstant(_oechem)
OEPDBAtomName_Hpr = _oechem.OEPDBAtomName_Hpr

_oechem.OEPDBAtomName_H1P_swigconstant(_oechem)
OEPDBAtomName_H1P = _oechem.OEPDBAtomName_H1P

_oechem.OEPDBAtomName_H2P_swigconstant(_oechem)
OEPDBAtomName_H2P = _oechem.OEPDBAtomName_H2P

_oechem.OEPDBAtomName_H3P_swigconstant(_oechem)
OEPDBAtomName_H3P = _oechem.OEPDBAtomName_H3P

_oechem.OEPDBAtomName_NA_swigconstant(_oechem)
OEPDBAtomName_NA = _oechem.OEPDBAtomName_NA

_oechem.OEPDBAtomName_CL_swigconstant(_oechem)
OEPDBAtomName_CL = _oechem.OEPDBAtomName_CL

_oechem.OEPreserveResInfo_None_swigconstant(_oechem)
OEPreserveResInfo_None = _oechem.OEPreserveResInfo_None

_oechem.OEPreserveResInfo_ChainID_swigconstant(_oechem)
OEPreserveResInfo_ChainID = _oechem.OEPreserveResInfo_ChainID

_oechem.OEPreserveResInfo_ResidueNumber_swigconstant(_oechem)
OEPreserveResInfo_ResidueNumber = _oechem.OEPreserveResInfo_ResidueNumber

_oechem.OEPreserveResInfo_ResidueName_swigconstant(_oechem)
OEPreserveResInfo_ResidueName = _oechem.OEPreserveResInfo_ResidueName

_oechem.OEPreserveResInfo_SerialNumber_swigconstant(_oechem)
OEPreserveResInfo_SerialNumber = _oechem.OEPreserveResInfo_SerialNumber

_oechem.OEPreserveResInfo_AlternateLocation_swigconstant(_oechem)
OEPreserveResInfo_AlternateLocation = _oechem.OEPreserveResInfo_AlternateLocation

_oechem.OEPreserveResInfo_InsertCode_swigconstant(_oechem)
OEPreserveResInfo_InsertCode = _oechem.OEPreserveResInfo_InsertCode

_oechem.OEPreserveResInfo_HetAtom_swigconstant(_oechem)
OEPreserveResInfo_HetAtom = _oechem.OEPreserveResInfo_HetAtom

_oechem.OEPreserveResInfo_AtomName_swigconstant(_oechem)
OEPreserveResInfo_AtomName = _oechem.OEPreserveResInfo_AtomName

_oechem.OEPreserveResInfo_FragmentNumber_swigconstant(_oechem)
OEPreserveResInfo_FragmentNumber = _oechem.OEPreserveResInfo_FragmentNumber

_oechem.OEPreserveResInfo_BFactor_swigconstant(_oechem)
OEPreserveResInfo_BFactor = _oechem.OEPreserveResInfo_BFactor

_oechem.OEPreserveResInfo_Occupancy_swigconstant(_oechem)
OEPreserveResInfo_Occupancy = _oechem.OEPreserveResInfo_Occupancy

_oechem.OEPreserveResInfo_Default_swigconstant(_oechem)
OEPreserveResInfo_Default = _oechem.OEPreserveResInfo_Default

_oechem.OEPreserveResInfo_All_swigconstant(_oechem)
OEPreserveResInfo_All = _oechem.OEPreserveResInfo_All

_oechem.OEPDBHydrogenStyle_Classic_swigconstant(_oechem)
OEPDBHydrogenStyle_Classic = _oechem.OEPDBHydrogenStyle_Classic

_oechem.OEPDBHydrogenStyle_Markley_swigconstant(_oechem)
OEPDBHydrogenStyle_Markley = _oechem.OEPDBHydrogenStyle_Markley

OEPDBHydrogenStyle_Modern = OEPDBHydrogenStyle_Markley


OEPDBHydrogenStyle_Default = OEPDBHydrogenStyle_Markley


_oechem.OEAssumptionImpl_None_swigconstant(_oechem)
OEAssumptionImpl_None = _oechem.OEAssumptionImpl_None

_oechem.OEAssumptionImpl_PDBOrder_swigconstant(_oechem)
OEAssumptionImpl_PDBOrder = _oechem.OEAssumptionImpl_PDBOrder

_oechem.OEAssumptionImpl_BondedResidue_swigconstant(_oechem)
OEAssumptionImpl_BondedResidue = _oechem.OEAssumptionImpl_BondedResidue

_oechem.OEAssumptionImpl_ResPerceived_swigconstant(_oechem)
OEAssumptionImpl_ResPerceived = _oechem.OEAssumptionImpl_ResPerceived

_oechem.OEAssumptionImpl_Default_swigconstant(_oechem)
OEAssumptionImpl_Default = _oechem.OEAssumptionImpl_Default

_oechem.OEAtomStereo_Undefined_swigconstant(_oechem)
OEAtomStereo_Undefined = _oechem.OEAtomStereo_Undefined

_oechem.OEAtomStereo_Right_swigconstant(_oechem)
OEAtomStereo_Right = _oechem.OEAtomStereo_Right

_oechem.OEAtomStereo_RightHanded_swigconstant(_oechem)
OEAtomStereo_RightHanded = _oechem.OEAtomStereo_RightHanded

_oechem.OEAtomStereo_Left_swigconstant(_oechem)
OEAtomStereo_Left = _oechem.OEAtomStereo_Left

_oechem.OEAtomStereo_LeftHanded_swigconstant(_oechem)
OEAtomStereo_LeftHanded = _oechem.OEAtomStereo_LeftHanded

_oechem.OEAtomStereo_Tetra_swigconstant(_oechem)
OEAtomStereo_Tetra = _oechem.OEAtomStereo_Tetra

_oechem.OEAtomStereo_Tetrahedral_swigconstant(_oechem)
OEAtomStereo_Tetrahedral = _oechem.OEAtomStereo_Tetrahedral

_oechem.OEAtomStereo_All_swigconstant(_oechem)
OEAtomStereo_All = _oechem.OEAtomStereo_All

_oechem.OEBondStereo_Undefined_swigconstant(_oechem)
OEBondStereo_Undefined = _oechem.OEBondStereo_Undefined

_oechem.OEBondStereo_Hash_swigconstant(_oechem)
OEBondStereo_Hash = _oechem.OEBondStereo_Hash

_oechem.OEBondStereo_Wedge_swigconstant(_oechem)
OEBondStereo_Wedge = _oechem.OEBondStereo_Wedge

_oechem.OEBondStereo_Cis_swigconstant(_oechem)
OEBondStereo_Cis = _oechem.OEBondStereo_Cis

_oechem.OEBondStereo_Trans_swigconstant(_oechem)
OEBondStereo_Trans = _oechem.OEBondStereo_Trans

_oechem.OEBondStereo_Wavy_swigconstant(_oechem)
OEBondStereo_Wavy = _oechem.OEBondStereo_Wavy

_oechem.OEBondStereo_DoubleEither_swigconstant(_oechem)
OEBondStereo_DoubleEither = _oechem.OEBondStereo_DoubleEither

_oechem.OEBondStereo_CisTrans_swigconstant(_oechem)
OEBondStereo_CisTrans = _oechem.OEBondStereo_CisTrans

_oechem.OEBondStereo_All_swigconstant(_oechem)
OEBondStereo_All = _oechem.OEBondStereo_All

_oechem.OEAtomStyle_BEGIN_swigconstant(_oechem)
OEAtomStyle_BEGIN = _oechem.OEAtomStyle_BEGIN

_oechem.OEAtomStyle_BallAndStick_swigconstant(_oechem)
OEAtomStyle_BallAndStick = _oechem.OEAtomStyle_BallAndStick

_oechem.OEAtomStyle_CPK_swigconstant(_oechem)
OEAtomStyle_CPK = _oechem.OEAtomStyle_CPK

_oechem.OEAtomStyle_Wireframe_swigconstant(_oechem)
OEAtomStyle_Wireframe = _oechem.OEAtomStyle_Wireframe

_oechem.OEAtomStyle_Stick_swigconstant(_oechem)
OEAtomStyle_Stick = _oechem.OEAtomStyle_Stick

_oechem.OEAtomStyle_Stars_swigconstant(_oechem)
OEAtomStyle_Stars = _oechem.OEAtomStyle_Stars

_oechem.OEAtomStyle_Hidden_swigconstant(_oechem)
OEAtomStyle_Hidden = _oechem.OEAtomStyle_Hidden

_oechem.OEAtomStyle_END_swigconstant(_oechem)
OEAtomStyle_END = _oechem.OEAtomStyle_END

_oechem.OEBaseColorScheme_BEGIN_swigconstant(_oechem)
OEBaseColorScheme_BEGIN = _oechem.OEBaseColorScheme_BEGIN

_oechem.OEBaseColorScheme_Solid_swigconstant(_oechem)
OEBaseColorScheme_Solid = _oechem.OEBaseColorScheme_Solid

_oechem.OEBaseColorScheme_GenericData_swigconstant(_oechem)
OEBaseColorScheme_GenericData = _oechem.OEBaseColorScheme_GenericData

_oechem.OEBaseColorScheme_END_swigconstant(_oechem)
OEBaseColorScheme_END = _oechem.OEBaseColorScheme_END

_oechem.OEAtomColorScheme_BEGIN_swigconstant(_oechem)
OEAtomColorScheme_BEGIN = _oechem.OEAtomColorScheme_BEGIN

_oechem.OEAtomColorScheme_Solid_swigconstant(_oechem)
OEAtomColorScheme_Solid = _oechem.OEAtomColorScheme_Solid

_oechem.OEAtomColorScheme_GenericData_swigconstant(_oechem)
OEAtomColorScheme_GenericData = _oechem.OEAtomColorScheme_GenericData

_oechem.OEAtomColorScheme_Amino_swigconstant(_oechem)
OEAtomColorScheme_Amino = _oechem.OEAtomColorScheme_Amino

_oechem.OEAtomColorScheme_BFactor_swigconstant(_oechem)
OEAtomColorScheme_BFactor = _oechem.OEAtomColorScheme_BFactor

_oechem.OEAtomColorScheme_Chain_swigconstant(_oechem)
OEAtomColorScheme_Chain = _oechem.OEAtomColorScheme_Chain

_oechem.OEAtomColorScheme_Element_swigconstant(_oechem)
OEAtomColorScheme_Element = _oechem.OEAtomColorScheme_Element

_oechem.OEAtomColorScheme_FormalCharge_swigconstant(_oechem)
OEAtomColorScheme_FormalCharge = _oechem.OEAtomColorScheme_FormalCharge

_oechem.OEAtomColorScheme_Occupancy_swigconstant(_oechem)
OEAtomColorScheme_Occupancy = _oechem.OEAtomColorScheme_Occupancy

_oechem.OEAtomColorScheme_PartialCharge_swigconstant(_oechem)
OEAtomColorScheme_PartialCharge = _oechem.OEAtomColorScheme_PartialCharge

_oechem.OEAtomColorScheme_ProteinSequence_swigconstant(_oechem)
OEAtomColorScheme_ProteinSequence = _oechem.OEAtomColorScheme_ProteinSequence

_oechem.OEAtomColorScheme_Residue_swigconstant(_oechem)
OEAtomColorScheme_Residue = _oechem.OEAtomColorScheme_Residue

_oechem.OEAtomColorScheme_Shapely_swigconstant(_oechem)
OEAtomColorScheme_Shapely = _oechem.OEAtomColorScheme_Shapely

_oechem.OEAtomColorScheme_AltLocation_swigconstant(_oechem)
OEAtomColorScheme_AltLocation = _oechem.OEAtomColorScheme_AltLocation

_oechem.OEAtomColorScheme_SecondaryStructure_swigconstant(_oechem)
OEAtomColorScheme_SecondaryStructure = _oechem.OEAtomColorScheme_SecondaryStructure

_oechem.OEAtomColorScheme_ResidueHydrophobicity_swigconstant(_oechem)
OEAtomColorScheme_ResidueHydrophobicity = _oechem.OEAtomColorScheme_ResidueHydrophobicity

_oechem.OEAtomColorScheme_END_swigconstant(_oechem)
OEAtomColorScheme_END = _oechem.OEAtomColorScheme_END

_oechem.OEHydrogenVisibility_BEGIN_swigconstant(_oechem)
OEHydrogenVisibility_BEGIN = _oechem.OEHydrogenVisibility_BEGIN

_oechem.OEHydrogenVisibility_Off_swigconstant(_oechem)
OEHydrogenVisibility_Off = _oechem.OEHydrogenVisibility_Off

_oechem.OEHydrogenVisibility_Polar_swigconstant(_oechem)
OEHydrogenVisibility_Polar = _oechem.OEHydrogenVisibility_Polar

_oechem.OEHydrogenVisibility_All_swigconstant(_oechem)
OEHydrogenVisibility_All = _oechem.OEHydrogenVisibility_All

_oechem.OEHydrogenVisibility_END_swigconstant(_oechem)
OEHydrogenVisibility_END = _oechem.OEHydrogenVisibility_END

_oechem.OEInteractionStyle_BEGIN_swigconstant(_oechem)
OEInteractionStyle_BEGIN = _oechem.OEInteractionStyle_BEGIN

_oechem.OEInteractionStyle_Off_swigconstant(_oechem)
OEInteractionStyle_Off = _oechem.OEInteractionStyle_Off

_oechem.OEInteractionStyle_IntermolecularHBonds_swigconstant(_oechem)
OEInteractionStyle_IntermolecularHBonds = _oechem.OEInteractionStyle_IntermolecularHBonds

_oechem.OEInteractionStyle_IntramolecularHBonds_swigconstant(_oechem)
OEInteractionStyle_IntramolecularHBonds = _oechem.OEInteractionStyle_IntramolecularHBonds

_oechem.OEInteractionStyle_UnsatisfiedHBonds_swigconstant(_oechem)
OEInteractionStyle_UnsatisfiedHBonds = _oechem.OEInteractionStyle_UnsatisfiedHBonds

_oechem.OEInteractionStyle_Bumps_swigconstant(_oechem)
OEInteractionStyle_Bumps = _oechem.OEInteractionStyle_Bumps

_oechem.OEInteractionStyle_END_swigconstant(_oechem)
OEInteractionStyle_END = _oechem.OEInteractionStyle_END

_oechem.OEProteinStyle_BEGIN_swigconstant(_oechem)
OEProteinStyle_BEGIN = _oechem.OEProteinStyle_BEGIN

_oechem.OEProteinStyle_Off_swigconstant(_oechem)
OEProteinStyle_Off = _oechem.OEProteinStyle_Off

_oechem.OEProteinStyle_Ribbons_swigconstant(_oechem)
OEProteinStyle_Ribbons = _oechem.OEProteinStyle_Ribbons

_oechem.OEProteinStyle_CAlpha_swigconstant(_oechem)
OEProteinStyle_CAlpha = _oechem.OEProteinStyle_CAlpha

_oechem.OEProteinStyle_Backbone_swigconstant(_oechem)
OEProteinStyle_Backbone = _oechem.OEProteinStyle_Backbone

_oechem.OEProteinStyle_END_swigconstant(_oechem)
OEProteinStyle_END = _oechem.OEProteinStyle_END

_oechem.OESurfaceType_BEGIN_swigconstant(_oechem)
OESurfaceType_BEGIN = _oechem.OESurfaceType_BEGIN

_oechem.OESurfaceType_Off_swigconstant(_oechem)
OESurfaceType_Off = _oechem.OESurfaceType_Off

_oechem.OESurfaceType_Molecular_swigconstant(_oechem)
OESurfaceType_Molecular = _oechem.OESurfaceType_Molecular

_oechem.OESurfaceType_Accessible_swigconstant(_oechem)
OESurfaceType_Accessible = _oechem.OESurfaceType_Accessible

_oechem.OESurfaceType_VDW_swigconstant(_oechem)
OESurfaceType_VDW = _oechem.OESurfaceType_VDW

_oechem.OESurfaceType_END_swigconstant(_oechem)
OESurfaceType_END = _oechem.OESurfaceType_END

_oechem.OESurfaceStyle_BEGIN_swigconstant(_oechem)
OESurfaceStyle_BEGIN = _oechem.OESurfaceStyle_BEGIN

_oechem.OESurfaceStyle_Solid_swigconstant(_oechem)
OESurfaceStyle_Solid = _oechem.OESurfaceStyle_Solid

_oechem.OESurfaceStyle_Mesh_swigconstant(_oechem)
OESurfaceStyle_Mesh = _oechem.OESurfaceStyle_Mesh

_oechem.OESurfaceStyle_Points_swigconstant(_oechem)
OESurfaceStyle_Points = _oechem.OESurfaceStyle_Points

_oechem.OESurfaceStyle_END_swigconstant(_oechem)
OESurfaceStyle_END = _oechem.OESurfaceStyle_END

_oechem.OESurfaceColorScheme_Solid_swigconstant(_oechem)
OESurfaceColorScheme_Solid = _oechem.OESurfaceColorScheme_Solid

_oechem.OESurfaceColorScheme_GenericData_swigconstant(_oechem)
OESurfaceColorScheme_GenericData = _oechem.OESurfaceColorScheme_GenericData

_oechem.OESurfaceColorScheme_BEGIN_swigconstant(_oechem)
OESurfaceColorScheme_BEGIN = _oechem.OESurfaceColorScheme_BEGIN

_oechem.OESurfaceColorScheme_Concavity_swigconstant(_oechem)
OESurfaceColorScheme_Concavity = _oechem.OESurfaceColorScheme_Concavity

_oechem.OESurfaceColorScheme_Curvature_swigconstant(_oechem)
OESurfaceColorScheme_Curvature = _oechem.OESurfaceColorScheme_Curvature

_oechem.OESurfaceColorScheme_Distance_swigconstant(_oechem)
OESurfaceColorScheme_Distance = _oechem.OESurfaceColorScheme_Distance

_oechem.OESurfaceColorScheme_Electrostatic_swigconstant(_oechem)
OESurfaceColorScheme_Electrostatic = _oechem.OESurfaceColorScheme_Electrostatic

_oechem.OESurfaceColorScheme_Grid_swigconstant(_oechem)
OESurfaceColorScheme_Grid = _oechem.OESurfaceColorScheme_Grid

_oechem.OESurfaceColorScheme_HBondPotential_swigconstant(_oechem)
OESurfaceColorScheme_HBondPotential = _oechem.OESurfaceColorScheme_HBondPotential

_oechem.OESurfaceColorScheme_Hydrophobicity_swigconstant(_oechem)
OESurfaceColorScheme_Hydrophobicity = _oechem.OESurfaceColorScheme_Hydrophobicity

_oechem.OESurfaceColorScheme_SurfacePotential_swigconstant(_oechem)
OESurfaceColorScheme_SurfacePotential = _oechem.OESurfaceColorScheme_SurfacePotential

_oechem.OESurfaceColorScheme_AtomColor_swigconstant(_oechem)
OESurfaceColorScheme_AtomColor = _oechem.OESurfaceColorScheme_AtomColor

_oechem.OESurfaceColorScheme_END_swigconstant(_oechem)
OESurfaceColorScheme_END = _oechem.OESurfaceColorScheme_END

_oechem.OEProteinColorScheme_BEGIN_swigconstant(_oechem)
OEProteinColorScheme_BEGIN = _oechem.OEProteinColorScheme_BEGIN

_oechem.OEProteinColorScheme_AtomColor_swigconstant(_oechem)
OEProteinColorScheme_AtomColor = _oechem.OEProteinColorScheme_AtomColor

_oechem.OEProteinColorScheme_END_swigconstant(_oechem)
OEProteinColorScheme_END = _oechem.OEProteinColorScheme_END

_oechem.OEStyleGridType_BEGIN_swigconstant(_oechem)
OEStyleGridType_BEGIN = _oechem.OEStyleGridType_BEGIN

_oechem.OEStyleGridType_Electrostatic_swigconstant(_oechem)
OEStyleGridType_Electrostatic = _oechem.OEStyleGridType_Electrostatic

_oechem.OEStyleGridType_END_swigconstant(_oechem)
OEStyleGridType_END = _oechem.OEStyleGridType_END

_oechem.OEContourStyle_BEGIN_swigconstant(_oechem)
OEContourStyle_BEGIN = _oechem.OEContourStyle_BEGIN

_oechem.OEContourStyle_Hidden_swigconstant(_oechem)
OEContourStyle_Hidden = _oechem.OEContourStyle_Hidden

_oechem.OEContourStyle_Solid_swigconstant(_oechem)
OEContourStyle_Solid = _oechem.OEContourStyle_Solid

_oechem.OEContourStyle_Mesh_swigconstant(_oechem)
OEContourStyle_Mesh = _oechem.OEContourStyle_Mesh

_oechem.OEContourStyle_Cloud_swigconstant(_oechem)
OEContourStyle_Cloud = _oechem.OEContourStyle_Cloud

_oechem.OEContourStyle_END_swigconstant(_oechem)
OEContourStyle_END = _oechem.OEContourStyle_END

_oechem.OEAtomLabelScheme_BEGIN_swigconstant(_oechem)
OEAtomLabelScheme_BEGIN = _oechem.OEAtomLabelScheme_BEGIN

_oechem.OEAtomLabelScheme_Off_swigconstant(_oechem)
OEAtomLabelScheme_Off = _oechem.OEAtomLabelScheme_Off

_oechem.OEAtomLabelScheme_Index_swigconstant(_oechem)
OEAtomLabelScheme_Index = _oechem.OEAtomLabelScheme_Index

_oechem.OEAtomLabelScheme_Element_swigconstant(_oechem)
OEAtomLabelScheme_Element = _oechem.OEAtomLabelScheme_Element

_oechem.OEAtomLabelScheme_Isotope_swigconstant(_oechem)
OEAtomLabelScheme_Isotope = _oechem.OEAtomLabelScheme_Isotope

_oechem.OEAtomLabelScheme_Type_swigconstant(_oechem)
OEAtomLabelScheme_Type = _oechem.OEAtomLabelScheme_Type

_oechem.OEAtomLabelScheme_IntegerType_swigconstant(_oechem)
OEAtomLabelScheme_IntegerType = _oechem.OEAtomLabelScheme_IntegerType

_oechem.OEAtomLabelScheme_MMFFType_swigconstant(_oechem)
OEAtomLabelScheme_MMFFType = _oechem.OEAtomLabelScheme_MMFFType

_oechem.OEAtomLabelScheme_ImplicitHCount_swigconstant(_oechem)
OEAtomLabelScheme_ImplicitHCount = _oechem.OEAtomLabelScheme_ImplicitHCount

_oechem.OEAtomLabelScheme_MapIdx_swigconstant(_oechem)
OEAtomLabelScheme_MapIdx = _oechem.OEAtomLabelScheme_MapIdx

_oechem.OEAtomLabelScheme_PartialCharge_swigconstant(_oechem)
OEAtomLabelScheme_PartialCharge = _oechem.OEAtomLabelScheme_PartialCharge

_oechem.OEAtomLabelScheme_FormalCharge_swigconstant(_oechem)
OEAtomLabelScheme_FormalCharge = _oechem.OEAtomLabelScheme_FormalCharge

_oechem.OEAtomLabelScheme_Radius_swigconstant(_oechem)
OEAtomLabelScheme_Radius = _oechem.OEAtomLabelScheme_Radius

_oechem.OEAtomLabelScheme_ResidueInfo_swigconstant(_oechem)
OEAtomLabelScheme_ResidueInfo = _oechem.OEAtomLabelScheme_ResidueInfo

_oechem.OEAtomLabelScheme_ResidueInfoCA_swigconstant(_oechem)
OEAtomLabelScheme_ResidueInfoCA = _oechem.OEAtomLabelScheme_ResidueInfoCA

_oechem.OEAtomLabelScheme_AltLocation_swigconstant(_oechem)
OEAtomLabelScheme_AltLocation = _oechem.OEAtomLabelScheme_AltLocation

_oechem.OEAtomLabelScheme_BFactor_swigconstant(_oechem)
OEAtomLabelScheme_BFactor = _oechem.OEAtomLabelScheme_BFactor

_oechem.OEAtomLabelScheme_Occupancy_swigconstant(_oechem)
OEAtomLabelScheme_Occupancy = _oechem.OEAtomLabelScheme_Occupancy

_oechem.OEAtomLabelScheme_Degree_swigconstant(_oechem)
OEAtomLabelScheme_Degree = _oechem.OEAtomLabelScheme_Degree

_oechem.OEAtomLabelScheme_IsChiral_swigconstant(_oechem)
OEAtomLabelScheme_IsChiral = _oechem.OEAtomLabelScheme_IsChiral

_oechem.OEAtomLabelScheme_Chirality_swigconstant(_oechem)
OEAtomLabelScheme_Chirality = _oechem.OEAtomLabelScheme_Chirality

_oechem.OEAtomLabelScheme_Hybridization_swigconstant(_oechem)
OEAtomLabelScheme_Hybridization = _oechem.OEAtomLabelScheme_Hybridization

_oechem.OEAtomLabelScheme_Symmetry_swigconstant(_oechem)
OEAtomLabelScheme_Symmetry = _oechem.OEAtomLabelScheme_Symmetry

_oechem.OEAtomLabelScheme_HasStereoSpecified_swigconstant(_oechem)
OEAtomLabelScheme_HasStereoSpecified = _oechem.OEAtomLabelScheme_HasStereoSpecified

_oechem.OEAtomLabelScheme_IsInRing_swigconstant(_oechem)
OEAtomLabelScheme_IsInRing = _oechem.OEAtomLabelScheme_IsInRing

_oechem.OEAtomLabelScheme_OEChemIdx_swigconstant(_oechem)
OEAtomLabelScheme_OEChemIdx = _oechem.OEAtomLabelScheme_OEChemIdx

_oechem.OEAtomLabelScheme_GenericData_swigconstant(_oechem)
OEAtomLabelScheme_GenericData = _oechem.OEAtomLabelScheme_GenericData

_oechem.OEAtomLabelScheme_User_swigconstant(_oechem)
OEAtomLabelScheme_User = _oechem.OEAtomLabelScheme_User

_oechem.OEAtomLabelScheme_END_swigconstant(_oechem)
OEAtomLabelScheme_END = _oechem.OEAtomLabelScheme_END

_oechem.OEColorerType_Integer_swigconstant(_oechem)
OEColorerType_Integer = _oechem.OEColorerType_Integer

_oechem.OEColorerType_Double_swigconstant(_oechem)
OEColorerType_Double = _oechem.OEColorerType_Double

_oechem.OEColorerType_String_swigconstant(_oechem)
OEColorerType_String = _oechem.OEColorerType_String

_oechem.OEColorerType_All_swigconstant(_oechem)
OEColorerType_All = _oechem.OEColorerType_All

_oechem.OEExprFlag_Unspec_swigconstant(_oechem)
OEExprFlag_Unspec = _oechem.OEExprFlag_Unspec

_oechem.OEExprFlag_Unspecified_swigconstant(_oechem)
OEExprFlag_Unspecified = _oechem.OEExprFlag_Unspecified

_oechem.OEExprFlag_Undefined_swigconstant(_oechem)
OEExprFlag_Undefined = _oechem.OEExprFlag_Undefined

_oechem.OEExprFlag_Up_swigconstant(_oechem)
OEExprFlag_Up = _oechem.OEExprFlag_Up

_oechem.OEExprFlag_Down_swigconstant(_oechem)
OEExprFlag_Down = _oechem.OEExprFlag_Down

_oechem.OEExprFlag_Cis_swigconstant(_oechem)
OEExprFlag_Cis = _oechem.OEExprFlag_Cis

_oechem.OEExprFlag_Trans_swigconstant(_oechem)
OEExprFlag_Trans = _oechem.OEExprFlag_Trans

_oechem.OEExprFlag_UpOrUnspec_swigconstant(_oechem)
OEExprFlag_UpOrUnspec = _oechem.OEExprFlag_UpOrUnspec

_oechem.OEExprFlag_DownOrUnspec_swigconstant(_oechem)
OEExprFlag_DownOrUnspec = _oechem.OEExprFlag_DownOrUnspec

_oechem.OEExprFlag_CisOrUnspec_swigconstant(_oechem)
OEExprFlag_CisOrUnspec = _oechem.OEExprFlag_CisOrUnspec

_oechem.OEExprFlag_TransOrUnspec_swigconstant(_oechem)
OEExprFlag_TransOrUnspec = _oechem.OEExprFlag_TransOrUnspec

_oechem.OEExprFlag_TetraLeft_swigconstant(_oechem)
OEExprFlag_TetraLeft = _oechem.OEExprFlag_TetraLeft

_oechem.OEExprFlag_TetraRight_swigconstant(_oechem)
OEExprFlag_TetraRight = _oechem.OEExprFlag_TetraRight

_oechem.OEExprType_Undefined_swigconstant(_oechem)
OEExprType_Undefined = _oechem.OEExprType_Undefined

_oechem.OEExprType_And_swigconstant(_oechem)
OEExprType_And = _oechem.OEExprType_And

_oechem.OEExprType_Or_swigconstant(_oechem)
OEExprType_Or = _oechem.OEExprType_Or

_oechem.OEExprType_Not_swigconstant(_oechem)
OEExprType_Not = _oechem.OEExprType_Not

_oechem.OEExprType_Const_swigconstant(_oechem)
OEExprType_Const = _oechem.OEExprType_Const

_oechem.OEExprType_Element_swigconstant(_oechem)
OEExprType_Element = _oechem.OEExprType_Element

_oechem.OEExprType_AromElem_swigconstant(_oechem)
OEExprType_AromElem = _oechem.OEExprType_AromElem

_oechem.OEExprType_Aromatic_swigconstant(_oechem)
OEExprType_Aromatic = _oechem.OEExprType_Aromatic

_oechem.OEExprType_Mass_swigconstant(_oechem)
OEExprType_Mass = _oechem.OEExprType_Mass

_oechem.OEExprType_HCount_swigconstant(_oechem)
OEExprType_HCount = _oechem.OEExprType_HCount

_oechem.OEExprType_MinHCount_swigconstant(_oechem)
OEExprType_MinHCount = _oechem.OEExprType_MinHCount

_oechem.OEExprType_Charge_swigconstant(_oechem)
OEExprType_Charge = _oechem.OEExprType_Charge

_oechem.OEExprType_Connect_swigconstant(_oechem)
OEExprType_Connect = _oechem.OEExprType_Connect

_oechem.OEExprType_Degree_swigconstant(_oechem)
OEExprType_Degree = _oechem.OEExprType_Degree

_oechem.OEExprType_MinDegree_swigconstant(_oechem)
OEExprType_MinDegree = _oechem.OEExprType_MinDegree

_oechem.OEExprType_Implicit_swigconstant(_oechem)
OEExprType_Implicit = _oechem.OEExprType_Implicit

_oechem.OEExprType_Ring_swigconstant(_oechem)
OEExprType_Ring = _oechem.OEExprType_Ring

_oechem.OEExprType_Size_swigconstant(_oechem)
OEExprType_Size = _oechem.OEExprType_Size

_oechem.OEExprType_RingBondCount_swigconstant(_oechem)
OEExprType_RingBondCount = _oechem.OEExprType_RingBondCount

_oechem.OEExprType_Valence_swigconstant(_oechem)
OEExprType_Valence = _oechem.OEExprType_Valence

_oechem.OEExprType_Hyb_swigconstant(_oechem)
OEExprType_Hyb = _oechem.OEExprType_Hyb

_oechem.OEExprType_Recurs_swigconstant(_oechem)
OEExprType_Recurs = _oechem.OEExprType_Recurs

_oechem.OEExprType_Chiral_swigconstant(_oechem)
OEExprType_Chiral = _oechem.OEExprType_Chiral

_oechem.OEExprType_Stereo_swigconstant(_oechem)
OEExprType_Stereo = _oechem.OEExprType_Stereo

_oechem.OEExprType_DefaultEdge_swigconstant(_oechem)
OEExprType_DefaultEdge = _oechem.OEExprType_DefaultEdge

_oechem.OEExprType_BondOrder_swigconstant(_oechem)
OEExprType_BondOrder = _oechem.OEExprType_BondOrder

_oechem.OEExprType_Metal_swigconstant(_oechem)
OEExprType_Metal = _oechem.OEExprType_Metal

_oechem.OEExprType_Halogen_swigconstant(_oechem)
OEExprType_Halogen = _oechem.OEExprType_Halogen

_oechem.OEExprType_IntType_swigconstant(_oechem)
OEExprType_IntType = _oechem.OEExprType_IntType

_oechem.OEExprType_StringType_swigconstant(_oechem)
OEExprType_StringType = _oechem.OEExprType_StringType

_oechem.OEExprType_SymmetryClass_swigconstant(_oechem)
OEExprType_SymmetryClass = _oechem.OEExprType_SymmetryClass

_oechem.OEExprType_Saturation_swigconstant(_oechem)
OEExprType_Saturation = _oechem.OEExprType_Saturation

_oechem.OEExprType_AllowedElements_swigconstant(_oechem)
OEExprType_AllowedElements = _oechem.OEExprType_AllowedElements

_oechem.OEExprType_TerminalAtom_swigconstant(_oechem)
OEExprType_TerminalAtom = _oechem.OEExprType_TerminalAtom

_oechem.OEExprType_SingleAromBond_swigconstant(_oechem)
OEExprType_SingleAromBond = _oechem.OEExprType_SingleAromBond

_oechem.OEExprType_DoubleAromBond_swigconstant(_oechem)
OEExprType_DoubleAromBond = _oechem.OEExprType_DoubleAromBond

_oechem.OEExprOpts_Mass_swigconstant(_oechem)
OEExprOpts_Mass = _oechem.OEExprOpts_Mass

_oechem.OEExprOpts_HCount_swigconstant(_oechem)
OEExprOpts_HCount = _oechem.OEExprOpts_HCount

_oechem.OEExprOpts_ImplicitHCount_swigconstant(_oechem)
OEExprOpts_ImplicitHCount = _oechem.OEExprOpts_ImplicitHCount

_oechem.OEExprOpts_FormalCharge_swigconstant(_oechem)
OEExprOpts_FormalCharge = _oechem.OEExprOpts_FormalCharge

_oechem.OEExprOpts_StrictFormalCharge_swigconstant(_oechem)
OEExprOpts_StrictFormalCharge = _oechem.OEExprOpts_StrictFormalCharge

_oechem.OEExprOpts_Degree_swigconstant(_oechem)
OEExprOpts_Degree = _oechem.OEExprOpts_Degree

_oechem.OEExprOpts_ExplicitDegree_swigconstant(_oechem)
OEExprOpts_ExplicitDegree = _oechem.OEExprOpts_ExplicitDegree

_oechem.OEExprOpts_HvyDegree_swigconstant(_oechem)
OEExprOpts_HvyDegree = _oechem.OEExprOpts_HvyDegree

_oechem.OEExprOpts_Valence_swigconstant(_oechem)
OEExprOpts_Valence = _oechem.OEExprOpts_Valence

_oechem.OEExprOpts_Hybridization_swigconstant(_oechem)
OEExprOpts_Hybridization = _oechem.OEExprOpts_Hybridization

_oechem.OEExprOpts_AtomicNumber_swigconstant(_oechem)
OEExprOpts_AtomicNumber = _oechem.OEExprOpts_AtomicNumber

_oechem.OEExprOpts_EqMetal_swigconstant(_oechem)
OEExprOpts_EqMetal = _oechem.OEExprOpts_EqMetal

_oechem.OEExprOpts_EqHalogen_swigconstant(_oechem)
OEExprOpts_EqHalogen = _oechem.OEExprOpts_EqHalogen

_oechem.OEExprOpts_EqON_swigconstant(_oechem)
OEExprOpts_EqON = _oechem.OEExprOpts_EqON

_oechem.OEExprOpts_EqONS_swigconstant(_oechem)
OEExprOpts_EqONS = _oechem.OEExprOpts_EqONS

_oechem.OEExprOpts_EqPS_swigconstant(_oechem)
OEExprOpts_EqPS = _oechem.OEExprOpts_EqPS

_oechem.OEExprOpts_EqAromatic_swigconstant(_oechem)
OEExprOpts_EqAromatic = _oechem.OEExprOpts_EqAromatic

_oechem.OEExprOpts_EqCHalogen_swigconstant(_oechem)
OEExprOpts_EqCHalogen = _oechem.OEExprOpts_EqCHalogen

_oechem.OEExprOpts_EqCAliphaticONS_swigconstant(_oechem)
OEExprOpts_EqCAliphaticONS = _oechem.OEExprOpts_EqCAliphaticONS

_oechem.OEExprOpts_EqCPSAcidRoot_swigconstant(_oechem)
OEExprOpts_EqCPSAcidRoot = _oechem.OEExprOpts_EqCPSAcidRoot

_oechem.OEExprOpts_EqKetoneSulfoneRoot_swigconstant(_oechem)
OEExprOpts_EqKetoneSulfoneRoot = _oechem.OEExprOpts_EqKetoneSulfoneRoot

_oechem.OEExprOpts_BondOrder_swigconstant(_oechem)
OEExprOpts_BondOrder = _oechem.OEExprOpts_BondOrder

_oechem.OEExprOpts_EqSingleDouble_swigconstant(_oechem)
OEExprOpts_EqSingleDouble = _oechem.OEExprOpts_EqSingleDouble

_oechem.OEExprOpts_EqDoubleTriple_swigconstant(_oechem)
OEExprOpts_EqDoubleTriple = _oechem.OEExprOpts_EqDoubleTriple

_oechem.OEExprOpts_EqNotAromatic_swigconstant(_oechem)
OEExprOpts_EqNotAromatic = _oechem.OEExprOpts_EqNotAromatic

_oechem.OEExprOpts_Aromaticity_swigconstant(_oechem)
OEExprOpts_Aromaticity = _oechem.OEExprOpts_Aromaticity

_oechem.OEExprOpts_RingMember_swigconstant(_oechem)
OEExprOpts_RingMember = _oechem.OEExprOpts_RingMember

_oechem.OEExprOpts_Chiral_swigconstant(_oechem)
OEExprOpts_Chiral = _oechem.OEExprOpts_Chiral

_oechem.OEExprOpts_IntType_swigconstant(_oechem)
OEExprOpts_IntType = _oechem.OEExprOpts_IntType

_oechem.OEExprOpts_StringType_swigconstant(_oechem)
OEExprOpts_StringType = _oechem.OEExprOpts_StringType

_oechem.OEExprOpts_SymmetryClass_swigconstant(_oechem)
OEExprOpts_SymmetryClass = _oechem.OEExprOpts_SymmetryClass

OEExprOpts_DefaultAtoms = OEExprOpts_AtomicNumber|OEExprOpts_Aromaticity|OEExprOpts_FormalCharge


OEExprOpts_DefaultBonds = OEExprOpts_BondOrder|OEExprOpts_Aromaticity


OEExprOpts_ExactAtoms = OEExprOpts_AtomicNumber|OEExprOpts_Aromaticity|OEExprOpts_StrictFormalCharge|OEExprOpts_Degree|OEExprOpts_HCount|OEExprOpts_Chiral|OEExprOpts_Mass|OEExprOpts_RingMember


OEExprOpts_ExactBonds = OEExprOpts_BondOrder|OEExprOpts_Aromaticity|OEExprOpts_RingMember|OEExprOpts_Chiral


OEExprOpts_AutomorphAtoms = OEExprOpts_AtomicNumber|OEExprOpts_Aromaticity|OEExprOpts_RingMember|OEExprOpts_HvyDegree


OEExprOpts_AutomorphBonds = OEExprOpts_Aromaticity


_oechem.OERadiiType_Default_swigconstant(_oechem)
OERadiiType_Default = _oechem.OERadiiType_Default

_oechem.OERadiiType_None_swigconstant(_oechem)
OERadiiType_None = _oechem.OERadiiType_None

_oechem.OERadiiType_Covalent_swigconstant(_oechem)
OERadiiType_Covalent = _oechem.OERadiiType_Covalent

_oechem.OERadiiType_Delphi_swigconstant(_oechem)
OERadiiType_Delphi = _oechem.OERadiiType_Delphi

_oechem.OERadiiType_Delphi_Robust_swigconstant(_oechem)
OERadiiType_Delphi_Robust = _oechem.OERadiiType_Delphi_Robust

_oechem.OERadiiType_BondiVdw_swigconstant(_oechem)
OERadiiType_BondiVdw = _oechem.OERadiiType_BondiVdw

_oechem.OERadiiType_BondiHVdw_swigconstant(_oechem)
OERadiiType_BondiHVdw = _oechem.OERadiiType_BondiHVdw

_oechem.OERadiiType_PaulingVdw_swigconstant(_oechem)
OERadiiType_PaulingVdw = _oechem.OERadiiType_PaulingVdw

_oechem.OERadiiType_PaulingVdw_Robust_swigconstant(_oechem)
OERadiiType_PaulingVdw_Robust = _oechem.OERadiiType_PaulingVdw_Robust

_oechem.OERadiiType_HonigIonicCavity_swigconstant(_oechem)
OERadiiType_HonigIonicCavity = _oechem.OERadiiType_HonigIonicCavity

_oechem.OERadiiType_HonigIonicCavity_Robust_swigconstant(_oechem)
OERadiiType_HonigIonicCavity_Robust = _oechem.OERadiiType_HonigIonicCavity_Robust

_oechem.OERadiiType_Zap9_JMC2008_swigconstant(_oechem)
OERadiiType_Zap9_JMC2008 = _oechem.OERadiiType_Zap9_JMC2008

_oechem.OERadiiType_Zap9_JCAMD2010_swigconstant(_oechem)
OERadiiType_Zap9_JCAMD2010 = _oechem.OERadiiType_Zap9_JCAMD2010

OERadiiType_Zap9 = OERadiiType_Zap9_JCAMD2010


_oechem.OERadiiType_Zap7_CarbonylOxygen_swigconstant(_oechem)
OERadiiType_Zap7_CarbonylOxygen = _oechem.OERadiiType_Zap7_CarbonylOxygen

_oechem.OERadiiType_Zap7_DoublyBondedOxygen_swigconstant(_oechem)
OERadiiType_Zap7_DoublyBondedOxygen = _oechem.OERadiiType_Zap7_DoublyBondedOxygen

OERadiiType_Zap7 = OERadiiType_Zap7_CarbonylOxygen


_oechem.OERadiiType_Max_swigconstant(_oechem)
OERadiiType_Max = _oechem.OERadiiType_Max

_oechem.OESecondaryStructure_Unassigned_swigconstant(_oechem)
OESecondaryStructure_Unassigned = _oechem.OESecondaryStructure_Unassigned

_oechem.OESecondaryStructure_Helix_swigconstant(_oechem)
OESecondaryStructure_Helix = _oechem.OESecondaryStructure_Helix

_oechem.OESecondaryStructure_Helix310_swigconstant(_oechem)
OESecondaryStructure_Helix310 = _oechem.OESecondaryStructure_Helix310

_oechem.OESecondaryStructure_HelixAlpha_swigconstant(_oechem)
OESecondaryStructure_HelixAlpha = _oechem.OESecondaryStructure_HelixAlpha

_oechem.OESecondaryStructure_HelixPi_swigconstant(_oechem)
OESecondaryStructure_HelixPi = _oechem.OESecondaryStructure_HelixPi

_oechem.OESecondaryStructure_Turn_swigconstant(_oechem)
OESecondaryStructure_Turn = _oechem.OESecondaryStructure_Turn

_oechem.OESecondaryStructure_Turn3_swigconstant(_oechem)
OESecondaryStructure_Turn3 = _oechem.OESecondaryStructure_Turn3

_oechem.OESecondaryStructure_Turn4_swigconstant(_oechem)
OESecondaryStructure_Turn4 = _oechem.OESecondaryStructure_Turn4

_oechem.OESecondaryStructure_Turn5_swigconstant(_oechem)
OESecondaryStructure_Turn5 = _oechem.OESecondaryStructure_Turn5

_oechem.OESecondaryStructure_Sheet_swigconstant(_oechem)
OESecondaryStructure_Sheet = _oechem.OESecondaryStructure_Sheet

_oechem.OESecondaryStructure_StrandSense_swigconstant(_oechem)
OESecondaryStructure_StrandSense = _oechem.OESecondaryStructure_StrandSense

_oechem.OESecondaryStructure_HelixLeft_swigconstant(_oechem)
OESecondaryStructure_HelixLeft = _oechem.OESecondaryStructure_HelixLeft

_oechem.OESecondaryStructure_SheetMask_swigconstant(_oechem)
OESecondaryStructure_SheetMask = _oechem.OESecondaryStructure_SheetMask

_oechem.OESecondaryStructure_Any_swigconstant(_oechem)
OESecondaryStructure_Any = _oechem.OESecondaryStructure_Any

_oechem.OEUncolorStrategy_UncolorNone_swigconstant(_oechem)
OEUncolorStrategy_UncolorNone = _oechem.OEUncolorStrategy_UncolorNone

_oechem.OEUncolorStrategy_ConvertAtomTypeToC_swigconstant(_oechem)
OEUncolorStrategy_ConvertAtomTypeToC = _oechem.OEUncolorStrategy_ConvertAtomTypeToC

_oechem.OEUncolorStrategy_ConvertBondTypeToSingle_swigconstant(_oechem)
OEUncolorStrategy_ConvertBondTypeToSingle = _oechem.OEUncolorStrategy_ConvertBondTypeToSingle

_oechem.OEUncolorStrategy_RemoveAtomStereo_swigconstant(_oechem)
OEUncolorStrategy_RemoveAtomStereo = _oechem.OEUncolorStrategy_RemoveAtomStereo

_oechem.OEUncolorStrategy_RemoveBondStereo_swigconstant(_oechem)
OEUncolorStrategy_RemoveBondStereo = _oechem.OEUncolorStrategy_RemoveBondStereo

_oechem.OEUncolorStrategy_RemoveAtomProperties_swigconstant(_oechem)
OEUncolorStrategy_RemoveAtomProperties = _oechem.OEUncolorStrategy_RemoveAtomProperties

_oechem.OEUncolorStrategy_RemoveGroupStereo_swigconstant(_oechem)
OEUncolorStrategy_RemoveGroupStereo = _oechem.OEUncolorStrategy_RemoveGroupStereo

OEUncolorStrategy_BemisMurcko = OEUncolorStrategy_ConvertAtomTypeToC|OEUncolorStrategy_RemoveAtomProperties|OEUncolorStrategy_RemoveAtomStereo|OEUncolorStrategy_ConvertBondTypeToSingle|OEUncolorStrategy_RemoveBondStereo


_oechem.OEUncolorStrategy_UncolorMask_swigconstant(_oechem)
OEUncolorStrategy_UncolorMask = _oechem.OEUncolorStrategy_UncolorMask

OEUncolorStrategy_DEFAULT = OEUncolorStrategy_BemisMurcko


OEUncolorStrategy_Default = OEUncolorStrategy_DEFAULT


OEAssumption_ResPerceived = 4


OEAssumption_PDBOrder = 1


OEAssumption_None = 0


OEAssumption_Default = 15


OEAssumption_BondedResidue = 2


_oechem.OEFragmentHBondType_LigandAccepts_swigconstant(_oechem)
OEFragmentHBondType_LigandAccepts = _oechem.OEFragmentHBondType_LigandAccepts

_oechem.OEFragmentHBondType_LigandDonates_swigconstant(_oechem)
OEFragmentHBondType_LigandDonates = _oechem.OEFragmentHBondType_LigandDonates

OEFragmentHBondType_ProteinDonates = OEFragmentHBondType_LigandAccepts


OEFragmentHBondType_ProteinAccepts = OEFragmentHBondType_LigandDonates


_oechem.OEFragmentChelatorType_LigandChelates_swigconstant(_oechem)
OEFragmentChelatorType_LigandChelates = _oechem.OEFragmentChelatorType_LigandChelates

_oechem.OEFragmentChelatorType_ProteinChelates_swigconstant(_oechem)
OEFragmentChelatorType_ProteinChelates = _oechem.OEFragmentChelatorType_ProteinChelates

_oechem.OEProtTorType_Unknown_swigconstant(_oechem)
OEProtTorType_Unknown = _oechem.OEProtTorType_Unknown

_oechem.OEProtTorType_Phi_swigconstant(_oechem)
OEProtTorType_Phi = _oechem.OEProtTorType_Phi

_oechem.OEProtTorType_Psi_swigconstant(_oechem)
OEProtTorType_Psi = _oechem.OEProtTorType_Psi

_oechem.OEProtTorType_Omega_swigconstant(_oechem)
OEProtTorType_Omega = _oechem.OEProtTorType_Omega

_oechem.OEProtTorType_Chi1_swigconstant(_oechem)
OEProtTorType_Chi1 = _oechem.OEProtTorType_Chi1

_oechem.OEProtTorType_Chi2_swigconstant(_oechem)
OEProtTorType_Chi2 = _oechem.OEProtTorType_Chi2

_oechem.OEProtTorType_Chi3_swigconstant(_oechem)
OEProtTorType_Chi3 = _oechem.OEProtTorType_Chi3

_oechem.OEProtTorType_Chi4_swigconstant(_oechem)
OEProtTorType_Chi4 = _oechem.OEProtTorType_Chi4

_oechem.OEProtTorType_Chi5_swigconstant(_oechem)
OEProtTorType_Chi5 = _oechem.OEProtTorType_Chi5

_oechem.OEProtTorType_Max_swigconstant(_oechem)
OEProtTorType_Max = _oechem.OEProtTorType_Max

_oechem.OERotamerLibrary_Dunbrack_swigconstant(_oechem)
OERotamerLibrary_Dunbrack = _oechem.OERotamerLibrary_Dunbrack

_oechem.OERotamerLibrary_Richardson_swigconstant(_oechem)
OERotamerLibrary_Richardson = _oechem.OERotamerLibrary_Richardson

_oechem.OERotamerLibrary_Richardson2016_swigconstant(_oechem)
OERotamerLibrary_Richardson2016 = _oechem.OERotamerLibrary_Richardson2016

_oechem.OERotamerLibrary_Default_swigconstant(_oechem)
OERotamerLibrary_Default = _oechem.OERotamerLibrary_Default

_oechem.OESeqAlignmentMethod_None_swigconstant(_oechem)
OESeqAlignmentMethod_None = _oechem.OESeqAlignmentMethod_None

_oechem.OESeqAlignmentMethod_Identity_swigconstant(_oechem)
OESeqAlignmentMethod_Identity = _oechem.OESeqAlignmentMethod_Identity

_oechem.OESeqAlignmentMethod_PAM250_swigconstant(_oechem)
OESeqAlignmentMethod_PAM250 = _oechem.OESeqAlignmentMethod_PAM250

_oechem.OESeqAlignmentMethod_BLOSUM62_swigconstant(_oechem)
OESeqAlignmentMethod_BLOSUM62 = _oechem.OESeqAlignmentMethod_BLOSUM62

_oechem.OESeqAlignmentMethod_GONNET_swigconstant(_oechem)
OESeqAlignmentMethod_GONNET = _oechem.OESeqAlignmentMethod_GONNET

_oechem.OEHBondInteractionHintType_LigandAccepts_swigconstant(_oechem)
OEHBondInteractionHintType_LigandAccepts = _oechem.OEHBondInteractionHintType_LigandAccepts

_oechem.OEHBondInteractionHintType_LigandDonates_swigconstant(_oechem)
OEHBondInteractionHintType_LigandDonates = _oechem.OEHBondInteractionHintType_LigandDonates

OEHBondInteractionHintType_ProteinDonates = OEHBondInteractionHintType_LigandAccepts


OEHBondInteractionHintType_ProteinAccepts = OEHBondInteractionHintType_LigandDonates


_oechem.OEHBondInteractionHintType_IntramolecularLigand_swigconstant(_oechem)
OEHBondInteractionHintType_IntramolecularLigand = _oechem.OEHBondInteractionHintType_IntramolecularLigand

_oechem.OEHBondInteractionHintType_IntramolecularProtein_swigconstant(_oechem)
OEHBondInteractionHintType_IntramolecularProtein = _oechem.OEHBondInteractionHintType_IntramolecularProtein

_oechem.OEHBondInteractionHintType_UnpairedLigandDonor_swigconstant(_oechem)
OEHBondInteractionHintType_UnpairedLigandDonor = _oechem.OEHBondInteractionHintType_UnpairedLigandDonor

_oechem.OEHBondInteractionHintType_UnpairedLigandAcceptor_swigconstant(_oechem)
OEHBondInteractionHintType_UnpairedLigandAcceptor = _oechem.OEHBondInteractionHintType_UnpairedLigandAcceptor

_oechem.OEHBondInteractionHintType_UnpairedProteinDonor_swigconstant(_oechem)
OEHBondInteractionHintType_UnpairedProteinDonor = _oechem.OEHBondInteractionHintType_UnpairedProteinDonor

_oechem.OEHBondInteractionHintType_UnpairedProteinAcceptor_swigconstant(_oechem)
OEHBondInteractionHintType_UnpairedProteinAcceptor = _oechem.OEHBondInteractionHintType_UnpairedProteinAcceptor

_oechem.OEHBondInteractionHintType_ClashAcceptorAcceptor_swigconstant(_oechem)
OEHBondInteractionHintType_ClashAcceptorAcceptor = _oechem.OEHBondInteractionHintType_ClashAcceptorAcceptor

_oechem.OEHBondInteractionHintType_ClashDonorDonor_swigconstant(_oechem)
OEHBondInteractionHintType_ClashDonorDonor = _oechem.OEHBondInteractionHintType_ClashDonorDonor

_oechem.OEHBondInteractionHintType_Clash_swigconstant(_oechem)
OEHBondInteractionHintType_Clash = _oechem.OEHBondInteractionHintType_Clash

_oechem.OEChelatorInteractionHintType_LigandChelates_swigconstant(_oechem)
OEChelatorInteractionHintType_LigandChelates = _oechem.OEChelatorInteractionHintType_LigandChelates

_oechem.OEChelatorInteractionHintType_ProteinChelates_swigconstant(_oechem)
OEChelatorInteractionHintType_ProteinChelates = _oechem.OEChelatorInteractionHintType_ProteinChelates

_oechem.OEChelatorInteractionHintType_IntramolecularLigand_swigconstant(_oechem)
OEChelatorInteractionHintType_IntramolecularLigand = _oechem.OEChelatorInteractionHintType_IntramolecularLigand

_oechem.OEChelatorInteractionHintType_IntramolecularProtein_swigconstant(_oechem)
OEChelatorInteractionHintType_IntramolecularProtein = _oechem.OEChelatorInteractionHintType_IntramolecularProtein

_oechem.OESaltBridgeInteractionHintType_LigandNegative_swigconstant(_oechem)
OESaltBridgeInteractionHintType_LigandNegative = _oechem.OESaltBridgeInteractionHintType_LigandNegative

_oechem.OESaltBridgeInteractionHintType_LigandPositive_swigconstant(_oechem)
OESaltBridgeInteractionHintType_LigandPositive = _oechem.OESaltBridgeInteractionHintType_LigandPositive

OESaltBridgeInteractionHintType_ProteinNegative = OESaltBridgeInteractionHintType_LigandPositive


OESaltBridgeInteractionHintType_ProteinPositive = OESaltBridgeInteractionHintType_LigandNegative


_oechem.OESaltBridgeInteractionHintType_Clash_swigconstant(_oechem)
OESaltBridgeInteractionHintType_Clash = _oechem.OESaltBridgeInteractionHintType_Clash

_oechem.OESaltBridgeInteractionHintType_UnpairedLigandPositive_swigconstant(_oechem)
OESaltBridgeInteractionHintType_UnpairedLigandPositive = _oechem.OESaltBridgeInteractionHintType_UnpairedLigandPositive

_oechem.OESaltBridgeInteractionHintType_UnpairedLigandNegative_swigconstant(_oechem)
OESaltBridgeInteractionHintType_UnpairedLigandNegative = _oechem.OESaltBridgeInteractionHintType_UnpairedLigandNegative

_oechem.OESaltBridgeInteractionHintType_UnpairedProteinPositive_swigconstant(_oechem)
OESaltBridgeInteractionHintType_UnpairedProteinPositive = _oechem.OESaltBridgeInteractionHintType_UnpairedProteinPositive

_oechem.OESaltBridgeInteractionHintType_UnpairedProteinNegative_swigconstant(_oechem)
OESaltBridgeInteractionHintType_UnpairedProteinNegative = _oechem.OESaltBridgeInteractionHintType_UnpairedProteinNegative

_oechem.OESaltBridgeInteractionHintType_UnpairedLigand_swigconstant(_oechem)
OESaltBridgeInteractionHintType_UnpairedLigand = _oechem.OESaltBridgeInteractionHintType_UnpairedLigand

_oechem.OESaltBridgeInteractionHintType_UnpairedProtein_swigconstant(_oechem)
OESaltBridgeInteractionHintType_UnpairedProtein = _oechem.OESaltBridgeInteractionHintType_UnpairedProtein

_oechem.OEStackingInteractionHintType_Pi_swigconstant(_oechem)
OEStackingInteractionHintType_Pi = _oechem.OEStackingInteractionHintType_Pi

_oechem.OEStackingInteractionHintType_T_swigconstant(_oechem)
OEStackingInteractionHintType_T = _oechem.OEStackingInteractionHintType_T

_oechem.OECationPiInteractionHintType_LigandPi_swigconstant(_oechem)
OECationPiInteractionHintType_LigandPi = _oechem.OECationPiInteractionHintType_LigandPi

_oechem.OECationPiInteractionHintType_ProteinPi_swigconstant(_oechem)
OECationPiInteractionHintType_ProteinPi = _oechem.OECationPiInteractionHintType_ProteinPi

OECationPiInteractionHintType_LigandCation = OECationPiInteractionHintType_ProteinPi


OECationPiInteractionHintType_ProteinCation = OECationPiInteractionHintType_LigandPi


_oechem.OEHalogenBondInteractionHintType_LigandElectrophile_swigconstant(_oechem)
OEHalogenBondInteractionHintType_LigandElectrophile = _oechem.OEHalogenBondInteractionHintType_LigandElectrophile

_oechem.OEHalogenBondInteractionHintType_LigandNucleophile_swigconstant(_oechem)
OEHalogenBondInteractionHintType_LigandNucleophile = _oechem.OEHalogenBondInteractionHintType_LigandNucleophile

_oechem.OEHalogenBondInteractionHintType_ProteinElectrophile_swigconstant(_oechem)
OEHalogenBondInteractionHintType_ProteinElectrophile = _oechem.OEHalogenBondInteractionHintType_ProteinElectrophile

_oechem.OEHalogenBondInteractionHintType_ProteinNucleophile_swigconstant(_oechem)
OEHalogenBondInteractionHintType_ProteinNucleophile = _oechem.OEHalogenBondInteractionHintType_ProteinNucleophile

_oechem.OEResidueDatabaseCategory_Ligand_swigconstant(_oechem)
OEResidueDatabaseCategory_Ligand = _oechem.OEResidueDatabaseCategory_Ligand

_oechem.OEResidueDatabaseCategory_Cofactor_swigconstant(_oechem)
OEResidueDatabaseCategory_Cofactor = _oechem.OEResidueDatabaseCategory_Cofactor

_oechem.OEResidueDatabaseCategory_CofactorAndLigand_swigconstant(_oechem)
OEResidueDatabaseCategory_CofactorAndLigand = _oechem.OEResidueDatabaseCategory_CofactorAndLigand

_oechem.OEResidueDatabaseCategory_AminoAcid_swigconstant(_oechem)
OEResidueDatabaseCategory_AminoAcid = _oechem.OEResidueDatabaseCategory_AminoAcid

_oechem.OEResidueDatabaseCategory_NucleicAcid_swigconstant(_oechem)
OEResidueDatabaseCategory_NucleicAcid = _oechem.OEResidueDatabaseCategory_NucleicAcid

_oechem.OEResidueDatabaseCategory_Saccharide_swigconstant(_oechem)
OEResidueDatabaseCategory_Saccharide = _oechem.OEResidueDatabaseCategory_Saccharide

_oechem.OEResidueDatabaseCategory_Metal_swigconstant(_oechem)
OEResidueDatabaseCategory_Metal = _oechem.OEResidueDatabaseCategory_Metal

_oechem.OEResidueDatabaseCategory_Misc_swigconstant(_oechem)
OEResidueDatabaseCategory_Misc = _oechem.OEResidueDatabaseCategory_Misc

_oechem.OEResidueDatabaseCategory_Polymer_swigconstant(_oechem)
OEResidueDatabaseCategory_Polymer = _oechem.OEResidueDatabaseCategory_Polymer

_oechem.OEResidueDatabaseCategory_Max_swigconstant(_oechem)
OEResidueDatabaseCategory_Max = _oechem.OEResidueDatabaseCategory_Max

_oechem.OEMolComplexFilterCategory_Unknown_swigconstant(_oechem)
OEMolComplexFilterCategory_Unknown = _oechem.OEMolComplexFilterCategory_Unknown

_oechem.OEMolComplexFilterCategory_Protein_swigconstant(_oechem)
OEMolComplexFilterCategory_Protein = _oechem.OEMolComplexFilterCategory_Protein

_oechem.OEMolComplexFilterCategory_Ligand_swigconstant(_oechem)
OEMolComplexFilterCategory_Ligand = _oechem.OEMolComplexFilterCategory_Ligand

_oechem.OEMolComplexFilterCategory_Water_swigconstant(_oechem)
OEMolComplexFilterCategory_Water = _oechem.OEMolComplexFilterCategory_Water

_oechem.OEMolComplexFilterCategory_Saccharide_swigconstant(_oechem)
OEMolComplexFilterCategory_Saccharide = _oechem.OEMolComplexFilterCategory_Saccharide

_oechem.OEMolComplexFilterCategory_Cofactor_swigconstant(_oechem)
OEMolComplexFilterCategory_Cofactor = _oechem.OEMolComplexFilterCategory_Cofactor

_oechem.OEMolComplexFilterCategory_CofactorAndLigand_swigconstant(_oechem)
OEMolComplexFilterCategory_CofactorAndLigand = _oechem.OEMolComplexFilterCategory_CofactorAndLigand

_oechem.OEMolComplexFilterCategory_Metal_swigconstant(_oechem)
OEMolComplexFilterCategory_Metal = _oechem.OEMolComplexFilterCategory_Metal

_oechem.OEMolComplexFilterCategory_CounterIon_swigconstant(_oechem)
OEMolComplexFilterCategory_CounterIon = _oechem.OEMolComplexFilterCategory_CounterIon

_oechem.OEMolComplexFilterCategory_ProtComplex_swigconstant(_oechem)
OEMolComplexFilterCategory_ProtComplex = _oechem.OEMolComplexFilterCategory_ProtComplex

_oechem.OEMolComplexFilterCategory_Peptide_swigconstant(_oechem)
OEMolComplexFilterCategory_Peptide = _oechem.OEMolComplexFilterCategory_Peptide

_oechem.OEMolComplexFilterCategory_DNA_RNA_swigconstant(_oechem)
OEMolComplexFilterCategory_DNA_RNA = _oechem.OEMolComplexFilterCategory_DNA_RNA

_oechem.OEMolComplexFilterCategory_Nucleotide_swigconstant(_oechem)
OEMolComplexFilterCategory_Nucleotide = _oechem.OEMolComplexFilterCategory_Nucleotide

_oechem.OEMolComplexFilterCategory_Covalent_swigconstant(_oechem)
OEMolComplexFilterCategory_Covalent = _oechem.OEMolComplexFilterCategory_Covalent

_oechem.OEMolComplexFilterCategory_Solution_swigconstant(_oechem)
OEMolComplexFilterCategory_Solution = _oechem.OEMolComplexFilterCategory_Solution

_oechem.OEMolComplexFilterCategory_Misc_swigconstant(_oechem)
OEMolComplexFilterCategory_Misc = _oechem.OEMolComplexFilterCategory_Misc

_oechem.OEMolComplexFilterCategory_Underdefined_swigconstant(_oechem)
OEMolComplexFilterCategory_Underdefined = _oechem.OEMolComplexFilterCategory_Underdefined

_oechem.OEMolComplexFilterCategory_Site1_swigconstant(_oechem)
OEMolComplexFilterCategory_Site1 = _oechem.OEMolComplexFilterCategory_Site1

_oechem.OEMolComplexFilterCategory_SurfaceWaters1_swigconstant(_oechem)
OEMolComplexFilterCategory_SurfaceWaters1 = _oechem.OEMolComplexFilterCategory_SurfaceWaters1

_oechem.OEMolComplexFilterCategory_Model1_swigconstant(_oechem)
OEMolComplexFilterCategory_Model1 = _oechem.OEMolComplexFilterCategory_Model1

_oechem.OEMolComplexFilterCategory_ChainA_swigconstant(_oechem)
OEMolComplexFilterCategory_ChainA = _oechem.OEMolComplexFilterCategory_ChainA

_oechem.OEMolComplexFilterCategory_Anything_swigconstant(_oechem)
OEMolComplexFilterCategory_Anything = _oechem.OEMolComplexFilterCategory_Anything

_oechem.OEMolComplexFilterCategory_Nothing_swigconstant(_oechem)
OEMolComplexFilterCategory_Nothing = _oechem.OEMolComplexFilterCategory_Nothing

_oechem.OESplitMolComplexSetup_LigName_swigconstant(_oechem)
OESplitMolComplexSetup_LigName = _oechem.OESplitMolComplexSetup_LigName

_oechem.OESplitMolComplexSetup_SiteNum_swigconstant(_oechem)
OESplitMolComplexSetup_SiteNum = _oechem.OESplitMolComplexSetup_SiteNum

_oechem.OESplitMolComplexSetup_SurfWat_swigconstant(_oechem)
OESplitMolComplexSetup_SurfWat = _oechem.OESplitMolComplexSetup_SurfWat

_oechem.OESplitMolComplexSetup_CovLig_swigconstant(_oechem)
OESplitMolComplexSetup_CovLig = _oechem.OESplitMolComplexSetup_CovLig

_oechem.OESplitMolComplexSetup_CovCofactor_swigconstant(_oechem)
OESplitMolComplexSetup_CovCofactor = _oechem.OESplitMolComplexSetup_CovCofactor

_oechem.OESplitMolComplexSetup_SeparateRes_swigconstant(_oechem)
OESplitMolComplexSetup_SeparateRes = _oechem.OESplitMolComplexSetup_SeparateRes

_oechem.OESplitMolComplexSetup_MaxSiteDist_swigconstant(_oechem)
OESplitMolComplexSetup_MaxSiteDist = _oechem.OESplitMolComplexSetup_MaxSiteDist

_oechem.OESplitMolComplexSetup_MaxSurfDist_swigconstant(_oechem)
OESplitMolComplexSetup_MaxSurfDist = _oechem.OESplitMolComplexSetup_MaxSurfDist

_oechem.OESplitMolComplexSetup_CovBondTreatment_swigconstant(_oechem)
OESplitMolComplexSetup_CovBondTreatment = _oechem.OESplitMolComplexSetup_CovBondTreatment

_oechem.OESplitMolComplexSetup_ModelNum_swigconstant(_oechem)
OESplitMolComplexSetup_ModelNum = _oechem.OESplitMolComplexSetup_ModelNum

_oechem.OESplitMolComplexSetup_LigFilter_swigconstant(_oechem)
OESplitMolComplexSetup_LigFilter = _oechem.OESplitMolComplexSetup_LigFilter

_oechem.OESplitMolComplexSetup_ProtFilter_swigconstant(_oechem)
OESplitMolComplexSetup_ProtFilter = _oechem.OESplitMolComplexSetup_ProtFilter

_oechem.OESplitMolComplexSetup_WatFilter_swigconstant(_oechem)
OESplitMolComplexSetup_WatFilter = _oechem.OESplitMolComplexSetup_WatFilter

_oechem.OESplitMolComplexSetup_All_swigconstant(_oechem)
OESplitMolComplexSetup_All = _oechem.OESplitMolComplexSetup_All

_oechem.OESplitMolComplexParam_DoNotOverride_swigconstant(_oechem)
OESplitMolComplexParam_DoNotOverride = _oechem.OESplitMolComplexParam_DoNotOverride

_oechem.OEMolComplexData_SDTagPrefix_swigconstant(_oechem)
OEMolComplexData_SDTagPrefix = _oechem.OEMolComplexData_SDTagPrefix

_oechem.OEMolComplexData_CovalentSDTag_swigconstant(_oechem)
OEMolComplexData_CovalentSDTag = _oechem.OEMolComplexData_CovalentSDTag

OEMolComplexData_CovalentLigandSDTag = OEMolComplexData_CovalentSDTag


_oechem.OEMolComplexData_PartOrderSDTag_swigconstant(_oechem)
OEMolComplexData_PartOrderSDTag = _oechem.OEMolComplexData_PartOrderSDTag

_oechem.OEMolComplexData_SiteNumberSDTag_swigconstant(_oechem)
OEMolComplexData_SiteNumberSDTag = _oechem.OEMolComplexData_SiteNumberSDTag

_oechem.OEMolComplexData_SurfaceWatersNumberSDTag_swigconstant(_oechem)
OEMolComplexData_SurfaceWatersNumberSDTag = _oechem.OEMolComplexData_SurfaceWatersNumberSDTag

_oechem.OEPlaceHydrogensMoverClass_Background_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_Background = _oechem.OEPlaceHydrogensMoverClass_Background

_oechem.OEPlaceHydrogensMoverClass_DH_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_DH = _oechem.OEPlaceHydrogensMoverClass_DH

_oechem.OEPlaceHydrogensMoverClass_NH3_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_NH3 = _oechem.OEPlaceHydrogensMoverClass_NH3

_oechem.OEPlaceHydrogensMoverClass_NH2_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_NH2 = _oechem.OEPlaceHydrogensMoverClass_NH2

_oechem.OEPlaceHydrogensMoverClass_NH_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_NH = _oechem.OEPlaceHydrogensMoverClass_NH

_oechem.OEPlaceHydrogensMoverClass_N_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_N = _oechem.OEPlaceHydrogensMoverClass_N

_oechem.OEPlaceHydrogensMoverClass_AroN_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_AroN = _oechem.OEPlaceHydrogensMoverClass_AroN

_oechem.OEPlaceHydrogensMoverClass_SCH3_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_SCH3 = _oechem.OEPlaceHydrogensMoverClass_SCH3

_oechem.OEPlaceHydrogensMoverClass_AroCH3_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_AroCH3 = _oechem.OEPlaceHydrogensMoverClass_AroCH3

_oechem.OEPlaceHydrogensMoverClass_Imidazole_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_Imidazole = _oechem.OEPlaceHydrogensMoverClass_Imidazole

_oechem.OEPlaceHydrogensMoverClass_AmideNO_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_AmideNO = _oechem.OEPlaceHydrogensMoverClass_AmideNO

_oechem.OEPlaceHydrogensMoverClass_COOH_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_COOH = _oechem.OEPlaceHydrogensMoverClass_COOH

_oechem.OEPlaceHydrogensMoverClass_Water_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_Water = _oechem.OEPlaceHydrogensMoverClass_Water

_oechem.OEPlaceHydrogensMoverClass_Max_swigconstant(_oechem)
OEPlaceHydrogensMoverClass_Max = _oechem.OEPlaceHydrogensMoverClass_Max

_oechem.OEPlaceHydrogensWaterProcessing_Ignore_swigconstant(_oechem)
OEPlaceHydrogensWaterProcessing_Ignore = _oechem.OEPlaceHydrogensWaterProcessing_Ignore

_oechem.OEPlaceHydrogensWaterProcessing_Focused_swigconstant(_oechem)
OEPlaceHydrogensWaterProcessing_Focused = _oechem.OEPlaceHydrogensWaterProcessing_Focused

_oechem.OEPlaceHydrogensWaterProcessing_FullSearch_swigconstant(_oechem)
OEPlaceHydrogensWaterProcessing_FullSearch = _oechem.OEPlaceHydrogensWaterProcessing_FullSearch

OEPlaceHydrogensWaterProcessing_Default = OEPlaceHydrogensWaterProcessing_FullSearch


_oechem.OERamaCategory_Unknown_swigconstant(_oechem)
OERamaCategory_Unknown = _oechem.OERamaCategory_Unknown

_oechem.OERamaCategory_Favored_swigconstant(_oechem)
OERamaCategory_Favored = _oechem.OERamaCategory_Favored

_oechem.OERamaCategory_Allowed_swigconstant(_oechem)
OERamaCategory_Allowed = _oechem.OERamaCategory_Allowed

_oechem.OERamaCategory_Outlier_swigconstant(_oechem)
OERamaCategory_Outlier = _oechem.OERamaCategory_Outlier

_oechem.OERamaCategory_Max_swigconstant(_oechem)
OERamaCategory_Max = _oechem.OERamaCategory_Max

_oechem.OERamaType_Unknown_swigconstant(_oechem)
OERamaType_Unknown = _oechem.OERamaType_Unknown

_oechem.OERamaType_General_swigconstant(_oechem)
OERamaType_General = _oechem.OERamaType_General

_oechem.OERamaType_Glycine_swigconstant(_oechem)
OERamaType_Glycine = _oechem.OERamaType_Glycine

_oechem.OERamaType_CisPro_swigconstant(_oechem)
OERamaType_CisPro = _oechem.OERamaType_CisPro

_oechem.OERamaType_TransPro_swigconstant(_oechem)
OERamaType_TransPro = _oechem.OERamaType_TransPro

_oechem.OERamaType_PrePro_swigconstant(_oechem)
OERamaType_PrePro = _oechem.OERamaType_PrePro

_oechem.OERamaType_IleVal_swigconstant(_oechem)
OERamaType_IleVal = _oechem.OERamaType_IleVal

_oechem.OERamaType_Max_swigconstant(_oechem)
OERamaType_Max = _oechem.OERamaType_Max
class OEUCharArray(object):
    """Proxy of C++ ArrayT<(unsigned char)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEUCharArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(unsigned char)> self, Py_ssize_t n) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, unsigned char const * d, Py_ssize_t n) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, unsigned char const * d, Py_ssize_t n, bool o) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, PyObject * input) -> OEUCharArray
        __init__(ArrayT<(unsigned char)> self, OEUCharArray rhs) -> OEUCharArray
        """
        this = _oechem.new_OEUCharArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEUCharArray') -> "bool":
        """__eq__(OEUCharArray self, OEUCharArray other) -> bool"""
        return _oechem.OEUCharArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEUCharArray self, double arg2, unsigned char arg3)
        __setitem__(OEUCharArray self, Py_ssize_t n, unsigned char value)
        """
        return _oechem.OEUCharArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEUCharArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEUCharArray self) -> PyObject *"""
        return _oechem.OEUCharArray___repr__(self)


    def PtrCast(self, *args) -> "unsigned char const *":
        """
        PtrCast(OEUCharArray self) -> unsigned char
        PtrCast(OEUCharArray self) -> unsigned char const *
        """
        return _oechem.OEUCharArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEUCharArray self) -> Py_ssize_t"""
        return _oechem.OEUCharArray___len__(self)

OEUCharArray_swigregister = _oechem.OEUCharArray_swigregister
OEUCharArray_swigregister(OEUCharArray)

class OEUIntArray(object):
    """Proxy of C++ ArrayT<(unsigned int)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEUIntArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(unsigned int)> self, Py_ssize_t n) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, unsigned int const * d, Py_ssize_t n) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, unsigned int const * d, Py_ssize_t n, bool o) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, PyObject * input) -> OEUIntArray
        __init__(ArrayT<(unsigned int)> self, OEUIntArray rhs) -> OEUIntArray
        """
        this = _oechem.new_OEUIntArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEUIntArray') -> "bool":
        """__eq__(OEUIntArray self, OEUIntArray other) -> bool"""
        return _oechem.OEUIntArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEUIntArray self, double arg2, unsigned int arg3)
        __setitem__(OEUIntArray self, Py_ssize_t n, unsigned int value)
        """
        return _oechem.OEUIntArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEUIntArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEUIntArray self) -> PyObject *"""
        return _oechem.OEUIntArray___repr__(self)


    def PtrCast(self, *args) -> "unsigned int const *":
        """
        PtrCast(OEUIntArray self) -> unsigned int
        PtrCast(OEUIntArray self) -> unsigned int const *
        """
        return _oechem.OEUIntArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEUIntArray self) -> Py_ssize_t"""
        return _oechem.OEUIntArray___len__(self)

OEUIntArray_swigregister = _oechem.OEUIntArray_swigregister
OEUIntArray_swigregister(OEUIntArray)

class OEIntArray(object):
    """Proxy of C++ ArrayT<(int)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEIntArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(int)> self, Py_ssize_t n) -> OEIntArray
        __init__(ArrayT<(int)> self, int const * d, Py_ssize_t n) -> OEIntArray
        __init__(ArrayT<(int)> self, int const * d, Py_ssize_t n, bool o) -> OEIntArray
        __init__(ArrayT<(int)> self, PyObject * input) -> OEIntArray
        __init__(ArrayT<(int)> self, OEIntArray rhs) -> OEIntArray
        """
        this = _oechem.new_OEIntArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEIntArray') -> "bool":
        """__eq__(OEIntArray self, OEIntArray other) -> bool"""
        return _oechem.OEIntArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEIntArray self, double arg2, int arg3)
        __setitem__(OEIntArray self, Py_ssize_t n, int value)
        """
        return _oechem.OEIntArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEIntArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEIntArray self) -> PyObject *"""
        return _oechem.OEIntArray___repr__(self)


    def PtrCast(self, *args) -> "int const *":
        """
        PtrCast(OEIntArray self) -> int
        PtrCast(OEIntArray self) -> int const *
        """
        return _oechem.OEIntArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEIntArray self) -> Py_ssize_t"""
        return _oechem.OEIntArray___len__(self)

OEIntArray_swigregister = _oechem.OEIntArray_swigregister
OEIntArray_swigregister(OEIntArray)

class OEFloatArray(object):
    """Proxy of C++ ArrayT<(float)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEFloatArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(float)> self, Py_ssize_t n) -> OEFloatArray
        __init__(ArrayT<(float)> self, float const * d, Py_ssize_t n) -> OEFloatArray
        __init__(ArrayT<(float)> self, float const * d, Py_ssize_t n, bool o) -> OEFloatArray
        __init__(ArrayT<(float)> self, PyObject * input) -> OEFloatArray
        __init__(ArrayT<(float)> self, OEFloatArray rhs) -> OEFloatArray
        """
        this = _oechem.new_OEFloatArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEFloatArray') -> "bool":
        """__eq__(OEFloatArray self, OEFloatArray other) -> bool"""
        return _oechem.OEFloatArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEFloatArray self, double arg2, float arg3)
        __setitem__(OEFloatArray self, Py_ssize_t n, float value)
        """
        return _oechem.OEFloatArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEFloatArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEFloatArray self) -> PyObject *"""
        return _oechem.OEFloatArray___repr__(self)


    def PtrCast(self, *args) -> "float const *":
        """
        PtrCast(OEFloatArray self) -> float
        PtrCast(OEFloatArray self) -> float const *
        """
        return _oechem.OEFloatArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEFloatArray self) -> Py_ssize_t"""
        return _oechem.OEFloatArray___len__(self)

OEFloatArray_swigregister = _oechem.OEFloatArray_swigregister
OEFloatArray_swigregister(OEFloatArray)

class OEDoubleArray(object):
    """Proxy of C++ ArrayT<(double)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEDoubleArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(double)> self, Py_ssize_t n) -> OEDoubleArray
        __init__(ArrayT<(double)> self, double const * d, Py_ssize_t n) -> OEDoubleArray
        __init__(ArrayT<(double)> self, double const * d, Py_ssize_t n, bool o) -> OEDoubleArray
        __init__(ArrayT<(double)> self, PyObject * input) -> OEDoubleArray
        __init__(ArrayT<(double)> self, OEDoubleArray rhs) -> OEDoubleArray
        """
        this = _oechem.new_OEDoubleArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEDoubleArray') -> "bool":
        """__eq__(OEDoubleArray self, OEDoubleArray other) -> bool"""
        return _oechem.OEDoubleArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEDoubleArray self, double arg2, double arg3)
        __setitem__(OEDoubleArray self, Py_ssize_t n, double value)
        """
        return _oechem.OEDoubleArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEDoubleArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEDoubleArray self) -> PyObject *"""
        return _oechem.OEDoubleArray___repr__(self)


    def PtrCast(self, *args) -> "double const *":
        """
        PtrCast(OEDoubleArray self) -> double
        PtrCast(OEDoubleArray self) -> double const *
        """
        return _oechem.OEDoubleArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEDoubleArray self) -> Py_ssize_t"""
        return _oechem.OEDoubleArray___len__(self)

OEDoubleArray_swigregister = _oechem.OEDoubleArray_swigregister
OEDoubleArray_swigregister(OEDoubleArray)

class OEBoolArray(object):
    """Proxy of C++ ArrayT<(bool)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEBoolArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(bool)> self, Py_ssize_t n) -> OEBoolArray
        __init__(ArrayT<(bool)> self, bool const * d, Py_ssize_t n) -> OEBoolArray
        __init__(ArrayT<(bool)> self, bool const * d, Py_ssize_t n, bool o) -> OEBoolArray
        __init__(ArrayT<(bool)> self, PyObject * input) -> OEBoolArray
        __init__(ArrayT<(bool)> self, OEBoolArray rhs) -> OEBoolArray
        """
        this = _oechem.new_OEBoolArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEBoolArray') -> "bool":
        """__eq__(OEBoolArray self, OEBoolArray other) -> bool"""
        return _oechem.OEBoolArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEBoolArray self, double arg2, bool arg3)
        __setitem__(OEBoolArray self, Py_ssize_t n, bool value)
        """
        return _oechem.OEBoolArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEBoolArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEBoolArray self) -> PyObject *"""
        return _oechem.OEBoolArray___repr__(self)


    def PtrCast(self, *args) -> "bool const *":
        """
        PtrCast(OEBoolArray self) -> bool
        PtrCast(OEBoolArray self) -> bool const *
        """
        return _oechem.OEBoolArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEBoolArray self) -> Py_ssize_t"""
        return _oechem.OEBoolArray___len__(self)

OEBoolArray_swigregister = _oechem.OEBoolArray_swigregister
OEBoolArray_swigregister(OEBoolArray)

class OEUIntVector(object):
    """Proxy of C++ std::vector<(unsigned int)> 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__(std::vector<(unsigned int)> self, unsigned int size=0) -> OEUIntVector
        __init__(std::vector<(unsigned int)> self) -> OEUIntVector
        __init__(std::vector<(unsigned int)> self, unsigned int size, unsigned int const & value) -> OEUIntVector
        __init__(std::vector<(unsigned int)> self, OEUIntVector arg2) -> OEUIntVector
        """
        this = _oechem.new_OEUIntVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEUIntVector self) -> unsigned int"""
        return _oechem.OEUIntVector___len__(self)


    def clear(self) -> "void":
        """clear(OEUIntVector self)"""
        return _oechem.OEUIntVector_clear(self)


    def append(self, x: 'unsigned int') -> "void":
        """append(OEUIntVector self, unsigned int x)"""
        return _oechem.OEUIntVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEUIntVector self) -> bool"""
        return _oechem.OEUIntVector___nonzero__(self)


    def pop(self) -> "unsigned int":
        """pop(OEUIntVector self) -> unsigned int"""
        return _oechem.OEUIntVector_pop(self)


    def __getitem__(self, i: 'int') -> "unsigned int":
        """__getitem__(OEUIntVector self, int i) -> unsigned int"""
        return _oechem.OEUIntVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< unsigned int >":
        """__getslice__(OEUIntVector self, int i, int j) -> OEUIntVector"""
        return _oechem.OEUIntVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'unsigned int') -> "void":
        """__setitem__(OEUIntVector self, int i, unsigned int x)"""
        return _oechem.OEUIntVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEUIntVector') -> "void":
        """__setslice__(OEUIntVector self, int i, int j, OEUIntVector v)"""
        return _oechem.OEUIntVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEUIntVector self, int i)"""
        return _oechem.OEUIntVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEUIntVector self, int i, int j)"""
        return _oechem.OEUIntVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEUIntVector
    __del__ = lambda self: None
OEUIntVector_swigregister = _oechem.OEUIntVector_swigregister
OEUIntVector_swigregister(OEUIntVector)

class OEIntVector(object):
    """Proxy of C++ std::vector<(int)> 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__(std::vector<(int)> self, unsigned int size=0) -> OEIntVector
        __init__(std::vector<(int)> self) -> OEIntVector
        __init__(std::vector<(int)> self, unsigned int size, int const & value) -> OEIntVector
        __init__(std::vector<(int)> self, OEIntVector arg2) -> OEIntVector
        """
        this = _oechem.new_OEIntVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEIntVector self) -> unsigned int"""
        return _oechem.OEIntVector___len__(self)


    def clear(self) -> "void":
        """clear(OEIntVector self)"""
        return _oechem.OEIntVector_clear(self)


    def append(self, x: 'int') -> "void":
        """append(OEIntVector self, int x)"""
        return _oechem.OEIntVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEIntVector self) -> bool"""
        return _oechem.OEIntVector___nonzero__(self)


    def pop(self) -> "int":
        """pop(OEIntVector self) -> int"""
        return _oechem.OEIntVector_pop(self)


    def __getitem__(self, i: 'int') -> "int":
        """__getitem__(OEIntVector self, int i) -> int"""
        return _oechem.OEIntVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< int >":
        """__getslice__(OEIntVector self, int i, int j) -> OEIntVector"""
        return _oechem.OEIntVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'int') -> "void":
        """__setitem__(OEIntVector self, int i, int x)"""
        return _oechem.OEIntVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEIntVector') -> "void":
        """__setslice__(OEIntVector self, int i, int j, OEIntVector v)"""
        return _oechem.OEIntVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEIntVector self, int i)"""
        return _oechem.OEIntVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEIntVector self, int i, int j)"""
        return _oechem.OEIntVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEIntVector
    __del__ = lambda self: None
OEIntVector_swigregister = _oechem.OEIntVector_swigregister
OEIntVector_swigregister(OEIntVector)

class OELongVector(object):
    """Proxy of C++ std::vector<(long)> 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__(std::vector<(long)> self, unsigned int size=0) -> OELongVector
        __init__(std::vector<(long)> self) -> OELongVector
        __init__(std::vector<(long)> self, unsigned int size, long const & value) -> OELongVector
        __init__(std::vector<(long)> self, OELongVector arg2) -> OELongVector
        """
        this = _oechem.new_OELongVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OELongVector self) -> unsigned int"""
        return _oechem.OELongVector___len__(self)


    def clear(self) -> "void":
        """clear(OELongVector self)"""
        return _oechem.OELongVector_clear(self)


    def append(self, x: 'long') -> "void":
        """append(OELongVector self, long x)"""
        return _oechem.OELongVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OELongVector self) -> bool"""
        return _oechem.OELongVector___nonzero__(self)


    def pop(self) -> "long":
        """pop(OELongVector self) -> long"""
        return _oechem.OELongVector_pop(self)


    def __getitem__(self, i: 'int') -> "long":
        """__getitem__(OELongVector self, int i) -> long"""
        return _oechem.OELongVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< long >":
        """__getslice__(OELongVector self, int i, int j) -> OELongVector"""
        return _oechem.OELongVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'long') -> "void":
        """__setitem__(OELongVector self, int i, long x)"""
        return _oechem.OELongVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OELongVector') -> "void":
        """__setslice__(OELongVector self, int i, int j, OELongVector v)"""
        return _oechem.OELongVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OELongVector self, int i)"""
        return _oechem.OELongVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OELongVector self, int i, int j)"""
        return _oechem.OELongVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OELongVector
    __del__ = lambda self: None
OELongVector_swigregister = _oechem.OELongVector_swigregister
OELongVector_swigregister(OELongVector)

class OECharVector(object):
    """Proxy of C++ std::vector<(char)> 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__(std::vector<(char)> self, unsigned int size=0) -> OECharVector
        __init__(std::vector<(char)> self) -> OECharVector
        __init__(std::vector<(char)> self, unsigned int size, char const & value) -> OECharVector
        __init__(std::vector<(char)> self, OECharVector arg2) -> OECharVector
        """
        this = _oechem.new_OECharVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OECharVector self) -> unsigned int"""
        return _oechem.OECharVector___len__(self)


    def clear(self) -> "void":
        """clear(OECharVector self)"""
        return _oechem.OECharVector_clear(self)


    def append(self, x: 'char') -> "void":
        """append(OECharVector self, char x)"""
        return _oechem.OECharVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OECharVector self) -> bool"""
        return _oechem.OECharVector___nonzero__(self)


    def pop(self) -> "char":
        """pop(OECharVector self) -> char"""
        return _oechem.OECharVector_pop(self)


    def __getitem__(self, i: 'int') -> "char":
        """__getitem__(OECharVector self, int i) -> char"""
        return _oechem.OECharVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< char >":
        """__getslice__(OECharVector self, int i, int j) -> OECharVector"""
        return _oechem.OECharVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'char') -> "void":
        """__setitem__(OECharVector self, int i, char x)"""
        return _oechem.OECharVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OECharVector') -> "void":
        """__setslice__(OECharVector self, int i, int j, OECharVector v)"""
        return _oechem.OECharVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OECharVector self, int i)"""
        return _oechem.OECharVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OECharVector self, int i, int j)"""
        return _oechem.OECharVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OECharVector
    __del__ = lambda self: None
OECharVector_swigregister = _oechem.OECharVector_swigregister
OECharVector_swigregister(OECharVector)

class OEUCharVector(object):
    """Proxy of C++ std::vector<(unsigned char)> 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__(std::vector<(unsigned char)> self, unsigned int size=0) -> OEUCharVector
        __init__(std::vector<(unsigned char)> self) -> OEUCharVector
        __init__(std::vector<(unsigned char)> self, unsigned int size, unsigned char const & value) -> OEUCharVector
        __init__(std::vector<(unsigned char)> self, OEUCharVector arg2) -> OEUCharVector
        """
        this = _oechem.new_OEUCharVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEUCharVector self) -> unsigned int"""
        return _oechem.OEUCharVector___len__(self)


    def clear(self) -> "void":
        """clear(OEUCharVector self)"""
        return _oechem.OEUCharVector_clear(self)


    def append(self, x: 'unsigned char') -> "void":
        """append(OEUCharVector self, unsigned char x)"""
        return _oechem.OEUCharVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEUCharVector self) -> bool"""
        return _oechem.OEUCharVector___nonzero__(self)


    def pop(self) -> "unsigned char":
        """pop(OEUCharVector self) -> unsigned char"""
        return _oechem.OEUCharVector_pop(self)


    def __getitem__(self, i: 'int') -> "unsigned char":
        """__getitem__(OEUCharVector self, int i) -> unsigned char"""
        return _oechem.OEUCharVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< unsigned char >":
        """__getslice__(OEUCharVector self, int i, int j) -> OEUCharVector"""
        return _oechem.OEUCharVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'unsigned char') -> "void":
        """__setitem__(OEUCharVector self, int i, unsigned char x)"""
        return _oechem.OEUCharVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEUCharVector') -> "void":
        """__setslice__(OEUCharVector self, int i, int j, OEUCharVector v)"""
        return _oechem.OEUCharVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEUCharVector self, int i)"""
        return _oechem.OEUCharVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEUCharVector self, int i, int j)"""
        return _oechem.OEUCharVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEUCharVector
    __del__ = lambda self: None
OEUCharVector_swigregister = _oechem.OEUCharVector_swigregister
OEUCharVector_swigregister(OEUCharVector)

class OEFloatVector(object):
    """Proxy of C++ std::vector<(float)> 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__(std::vector<(float)> self, unsigned int size=0) -> OEFloatVector
        __init__(std::vector<(float)> self) -> OEFloatVector
        __init__(std::vector<(float)> self, unsigned int size, float const & value) -> OEFloatVector
        __init__(std::vector<(float)> self, OEFloatVector arg2) -> OEFloatVector
        """
        this = _oechem.new_OEFloatVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEFloatVector self) -> unsigned int"""
        return _oechem.OEFloatVector___len__(self)


    def clear(self) -> "void":
        """clear(OEFloatVector self)"""
        return _oechem.OEFloatVector_clear(self)


    def append(self, x: 'float') -> "void":
        """append(OEFloatVector self, float x)"""
        return _oechem.OEFloatVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEFloatVector self) -> bool"""
        return _oechem.OEFloatVector___nonzero__(self)


    def pop(self) -> "float":
        """pop(OEFloatVector self) -> float"""
        return _oechem.OEFloatVector_pop(self)


    def __getitem__(self, i: 'int') -> "float":
        """__getitem__(OEFloatVector self, int i) -> float"""
        return _oechem.OEFloatVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< float >":
        """__getslice__(OEFloatVector self, int i, int j) -> OEFloatVector"""
        return _oechem.OEFloatVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'float') -> "void":
        """__setitem__(OEFloatVector self, int i, float x)"""
        return _oechem.OEFloatVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEFloatVector') -> "void":
        """__setslice__(OEFloatVector self, int i, int j, OEFloatVector v)"""
        return _oechem.OEFloatVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEFloatVector self, int i)"""
        return _oechem.OEFloatVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEFloatVector self, int i, int j)"""
        return _oechem.OEFloatVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEFloatVector
    __del__ = lambda self: None
OEFloatVector_swigregister = _oechem.OEFloatVector_swigregister
OEFloatVector_swigregister(OEFloatVector)

class OEDoubleVector(object):
    """Proxy of C++ std::vector<(double)> 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__(std::vector<(double)> self, unsigned int size=0) -> OEDoubleVector
        __init__(std::vector<(double)> self) -> OEDoubleVector
        __init__(std::vector<(double)> self, unsigned int size, double const & value) -> OEDoubleVector
        __init__(std::vector<(double)> self, OEDoubleVector arg2) -> OEDoubleVector
        """
        this = _oechem.new_OEDoubleVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEDoubleVector self) -> unsigned int"""
        return _oechem.OEDoubleVector___len__(self)


    def clear(self) -> "void":
        """clear(OEDoubleVector self)"""
        return _oechem.OEDoubleVector_clear(self)


    def append(self, x: 'double') -> "void":
        """append(OEDoubleVector self, double x)"""
        return _oechem.OEDoubleVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEDoubleVector self) -> bool"""
        return _oechem.OEDoubleVector___nonzero__(self)


    def pop(self) -> "double":
        """pop(OEDoubleVector self) -> double"""
        return _oechem.OEDoubleVector_pop(self)


    def __getitem__(self, i: 'int') -> "double":
        """__getitem__(OEDoubleVector self, int i) -> double"""
        return _oechem.OEDoubleVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< double >":
        """__getslice__(OEDoubleVector self, int i, int j) -> OEDoubleVector"""
        return _oechem.OEDoubleVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'double') -> "void":
        """__setitem__(OEDoubleVector self, int i, double x)"""
        return _oechem.OEDoubleVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEDoubleVector') -> "void":
        """__setslice__(OEDoubleVector self, int i, int j, OEDoubleVector v)"""
        return _oechem.OEDoubleVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEDoubleVector self, int i)"""
        return _oechem.OEDoubleVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEDoubleVector self, int i, int j)"""
        return _oechem.OEDoubleVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEDoubleVector
    __del__ = lambda self: None
OEDoubleVector_swigregister = _oechem.OEDoubleVector_swigregister
OEDoubleVector_swigregister(OEDoubleVector)


def PopEmptyIter() -> "void *":
    """PopEmptyIter() -> void *"""
    return _oechem.PopEmptyIter()

def PushEmptyIter(arg1: 'void *') -> "void":
    """PushEmptyIter(void * arg1)"""
    return _oechem.PushEmptyIter(arg1)


IntArray = OEIntArray
FloatArray = OEFloatArray
DoubleArray = OEDoubleArray


class OEAtomVector(object):
    """Proxy of C++ std::vector<(p.OEChem::OEAtomBase)> 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__(std::vector<(p.OEChem::OEAtomBase)> self, unsigned int size=0) -> OEAtomVector
        __init__(std::vector<(p.OEChem::OEAtomBase)> self) -> OEAtomVector
        __init__(std::vector<(p.OEChem::OEAtomBase)> self, unsigned int size, OEChem::OEAtomBase *& value) -> OEAtomVector
        __init__(std::vector<(p.OEChem::OEAtomBase)> self, OEAtomVector arg2) -> OEAtomVector
        """
        this = _oechem.new_OEAtomVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEAtomVector self) -> unsigned int"""
        return _oechem.OEAtomVector___len__(self)


    def clear(self) -> "void":
        """clear(OEAtomVector self)"""
        return _oechem.OEAtomVector_clear(self)


    def append(self, x: 'OEAtomBase') -> "void":
        """append(OEAtomVector self, OEAtomBase x)"""
        return _oechem.OEAtomVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEAtomVector self) -> bool"""
        return _oechem.OEAtomVector___nonzero__(self)


    def pop(self) -> "OEChem::OEAtomBase *":
        """pop(OEAtomVector self) -> OEAtomBase"""
        return _oechem.OEAtomVector_pop(self)


    def __getitem__(self, i: 'int') -> "OEChem::OEAtomBase *":
        """__getitem__(OEAtomVector self, int i) -> OEAtomBase"""
        return _oechem.OEAtomVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< OEChem::OEAtomBase * >":
        """__getslice__(OEAtomVector self, int i, int j) -> OEAtomVector"""
        return _oechem.OEAtomVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'OEAtomBase') -> "void":
        """__setitem__(OEAtomVector self, int i, OEAtomBase x)"""
        return _oechem.OEAtomVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEAtomVector') -> "void":
        """__setslice__(OEAtomVector self, int i, int j, OEAtomVector v)"""
        return _oechem.OEAtomVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEAtomVector self, int i)"""
        return _oechem.OEAtomVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEAtomVector self, int i, int j)"""
        return _oechem.OEAtomVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEAtomVector
    __del__ = lambda self: None
OEAtomVector_swigregister = _oechem.OEAtomVector_swigregister
OEAtomVector_swigregister(OEAtomVector)

class OEBondVector(object):
    """Proxy of C++ std::vector<(p.OEChem::OEBondBase)> 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__(std::vector<(p.OEChem::OEBondBase)> self, unsigned int size=0) -> OEBondVector
        __init__(std::vector<(p.OEChem::OEBondBase)> self) -> OEBondVector
        __init__(std::vector<(p.OEChem::OEBondBase)> self, unsigned int size, OEChem::OEBondBase *& value) -> OEBondVector
        __init__(std::vector<(p.OEChem::OEBondBase)> self, OEBondVector arg2) -> OEBondVector
        """
        this = _oechem.new_OEBondVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEBondVector self) -> unsigned int"""
        return _oechem.OEBondVector___len__(self)


    def clear(self) -> "void":
        """clear(OEBondVector self)"""
        return _oechem.OEBondVector_clear(self)


    def append(self, x: 'OEBondBase') -> "void":
        """append(OEBondVector self, OEBondBase x)"""
        return _oechem.OEBondVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEBondVector self) -> bool"""
        return _oechem.OEBondVector___nonzero__(self)


    def pop(self) -> "OEChem::OEBondBase *":
        """pop(OEBondVector self) -> OEBondBase"""
        return _oechem.OEBondVector_pop(self)


    def __getitem__(self, i: 'int') -> "OEChem::OEBondBase *":
        """__getitem__(OEBondVector self, int i) -> OEBondBase"""
        return _oechem.OEBondVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< OEChem::OEBondBase * >":
        """__getslice__(OEBondVector self, int i, int j) -> OEBondVector"""
        return _oechem.OEBondVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'OEBondBase') -> "void":
        """__setitem__(OEBondVector self, int i, OEBondBase x)"""
        return _oechem.OEBondVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEBondVector') -> "void":
        """__setslice__(OEBondVector self, int i, int j, OEBondVector v)"""
        return _oechem.OEBondVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEBondVector self, int i)"""
        return _oechem.OEBondVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEBondVector self, int i, int j)"""
        return _oechem.OEBondVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEBondVector
    __del__ = lambda self: None
OEBondVector_swigregister = _oechem.OEBondVector_swigregister
OEBondVector_swigregister(OEBondVector)

class OEAtomBondSetVector(object):
    """Proxy of C++ std::vector<(OEChem::OEAtomBondSet)> 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__(std::vector<(OEChem::OEAtomBondSet)> self, unsigned int size=0) -> OEAtomBondSetVector
        __init__(std::vector<(OEChem::OEAtomBondSet)> self) -> OEAtomBondSetVector
        __init__(std::vector<(OEChem::OEAtomBondSet)> self, unsigned int size, OEAtomBondSet value) -> OEAtomBondSetVector
        __init__(std::vector<(OEChem::OEAtomBondSet)> self, OEAtomBondSetVector arg2) -> OEAtomBondSetVector
        """
        this = _oechem.new_OEAtomBondSetVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEAtomBondSetVector self) -> unsigned int"""
        return _oechem.OEAtomBondSetVector___len__(self)


    def clear(self) -> "void":
        """clear(OEAtomBondSetVector self)"""
        return _oechem.OEAtomBondSetVector_clear(self)


    def append(self, x: 'OEAtomBondSet') -> "void":
        """append(OEAtomBondSetVector self, OEAtomBondSet x)"""
        return _oechem.OEAtomBondSetVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEAtomBondSetVector self) -> bool"""
        return _oechem.OEAtomBondSetVector___nonzero__(self)


    def pop(self) -> "OEChem::OEAtomBondSet":
        """pop(OEAtomBondSetVector self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetVector_pop(self)


    def __getitem__(self, i: 'int') -> "OEChem::OEAtomBondSet &":
        """__getitem__(OEAtomBondSetVector self, int i) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< OEChem::OEAtomBondSet >":
        """__getslice__(OEAtomBondSetVector self, int i, int j) -> OEAtomBondSetVector"""
        return _oechem.OEAtomBondSetVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'OEAtomBondSet') -> "void":
        """__setitem__(OEAtomBondSetVector self, int i, OEAtomBondSet x)"""
        return _oechem.OEAtomBondSetVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEAtomBondSetVector') -> "void":
        """__setslice__(OEAtomBondSetVector self, int i, int j, OEAtomBondSetVector v)"""
        return _oechem.OEAtomBondSetVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEAtomBondSetVector self, int i)"""
        return _oechem.OEAtomBondSetVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEAtomBondSetVector self, int i, int j)"""
        return _oechem.OEAtomBondSetVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEAtomBondSetVector
    __del__ = lambda self: None
OEAtomBondSetVector_swigregister = _oechem.OEAtomBondSetVector_swigregister
OEAtomBondSetVector_swigregister(OEAtomBondSetVector)

class OESubSearchVector(object):
    """Proxy of C++ std::vector<(OEChem::OESubSearch)> 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__(std::vector<(OEChem::OESubSearch)> self, unsigned int size=0) -> OESubSearchVector
        __init__(std::vector<(OEChem::OESubSearch)> self) -> OESubSearchVector
        __init__(std::vector<(OEChem::OESubSearch)> self, unsigned int size, OESubSearch value) -> OESubSearchVector
        __init__(std::vector<(OEChem::OESubSearch)> self, OESubSearchVector arg2) -> OESubSearchVector
        """
        this = _oechem.new_OESubSearchVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OESubSearchVector self) -> unsigned int"""
        return _oechem.OESubSearchVector___len__(self)


    def clear(self) -> "void":
        """clear(OESubSearchVector self)"""
        return _oechem.OESubSearchVector_clear(self)


    def append(self, x: 'OESubSearch') -> "void":
        """append(OESubSearchVector self, OESubSearch x)"""
        return _oechem.OESubSearchVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OESubSearchVector self) -> bool"""
        return _oechem.OESubSearchVector___nonzero__(self)


    def pop(self) -> "OEChem::OESubSearch":
        """pop(OESubSearchVector self) -> OESubSearch"""
        return _oechem.OESubSearchVector_pop(self)


    def __getitem__(self, i: 'int') -> "OEChem::OESubSearch &":
        """__getitem__(OESubSearchVector self, int i) -> OESubSearch"""
        return _oechem.OESubSearchVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< OEChem::OESubSearch >":
        """__getslice__(OESubSearchVector self, int i, int j) -> OESubSearchVector"""
        return _oechem.OESubSearchVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'OESubSearch') -> "void":
        """__setitem__(OESubSearchVector self, int i, OESubSearch x)"""
        return _oechem.OESubSearchVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OESubSearchVector') -> "void":
        """__setslice__(OESubSearchVector self, int i, int j, OESubSearchVector v)"""
        return _oechem.OESubSearchVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OESubSearchVector self, int i)"""
        return _oechem.OESubSearchVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OESubSearchVector self, int i, int j)"""
        return _oechem.OESubSearchVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OESubSearchVector
    __del__ = lambda self: None
OESubSearchVector_swigregister = _oechem.OESubSearchVector_swigregister
OESubSearchVector_swigregister(OESubSearchVector)

class OEAtomArray(object):
    """Proxy of C++ ArrayT<(p.OEChem::OEAtomBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEAtomArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, Py_ssize_t n) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, OEChem::OEAtomBase *const * d, Py_ssize_t n) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, OEChem::OEAtomBase *const * d, Py_ssize_t n, bool o) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, PyObject * input) -> OEAtomArray
        __init__(ArrayT<(p.OEChem::OEAtomBase)> self, OEAtomArray rhs) -> OEAtomArray
        """
        this = _oechem.new_OEAtomArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEAtomArray') -> "bool":
        """__eq__(OEAtomArray self, OEAtomArray other) -> bool"""
        return _oechem.OEAtomArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEAtomArray self, double arg2, OEAtomBase arg3)
        __setitem__(OEAtomArray self, Py_ssize_t n, OEAtomBase value)
        """
        return _oechem.OEAtomArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEAtomArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEAtomArray self) -> PyObject *"""
        return _oechem.OEAtomArray___repr__(self)


    def PtrCast(self, *args) -> "OEChem::OEAtomBase *const *":
        """
        PtrCast(OEAtomArray self) -> OEAtomBase
        PtrCast(OEAtomArray self) -> OEChem::OEAtomBase *const *
        """
        return _oechem.OEAtomArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEAtomArray self) -> Py_ssize_t"""
        return _oechem.OEAtomArray___len__(self)

OEAtomArray_swigregister = _oechem.OEAtomArray_swigregister
OEAtomArray_swigregister(OEAtomArray)

class OEBondArray(object):
    """Proxy of C++ ArrayT<(p.OEChem::OEBondBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __swig_destroy__ = _oechem.delete_OEBondArray
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, Py_ssize_t n) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, OEChem::OEBondBase *const * d, Py_ssize_t n) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, OEChem::OEBondBase *const * d, Py_ssize_t n, bool o) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, PyObject * input) -> OEBondArray
        __init__(ArrayT<(p.OEChem::OEBondBase)> self, OEBondArray rhs) -> OEBondArray
        """
        this = _oechem.new_OEBondArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, other: 'OEBondArray') -> "bool":
        """__eq__(OEBondArray self, OEBondArray other) -> bool"""
        return _oechem.OEBondArray___eq__(self, other)


    def __setitem__(self, *args) -> "void":
        """
        __setitem__(OEBondArray self, double arg2, OEBondBase arg3)
        __setitem__(OEBondArray self, Py_ssize_t n, OEBondBase value)
        """
        return _oechem.OEBondArray___setitem__(self, *args)


    def __getitem__(self, obj):
        if not isinstance(obj, slice):
            return _oechem.OEBondArray___getitem__(self, obj)

        indices = range(*obj.indices(len(self)))
        newarr  = self.__class__(len(indices))
        for dst, src in enumerate(indices):
            newarr[dst] = self[src]
        return newarr



    def __repr__(self) -> "PyObject *":
        """__repr__(OEBondArray self) -> PyObject *"""
        return _oechem.OEBondArray___repr__(self)


    def PtrCast(self, *args) -> "OEChem::OEBondBase *const *":
        """
        PtrCast(OEBondArray self) -> OEBondBase
        PtrCast(OEBondArray self) -> OEChem::OEBondBase *const *
        """
        return _oechem.OEBondArray_PtrCast(self, *args)


    def __len__(self) -> "Py_ssize_t":
        """__len__(OEBondArray self) -> Py_ssize_t"""
        return _oechem.OEBondArray___len__(self)

OEBondArray_swigregister = _oechem.OEBondArray_swigregister
OEBondArray_swigregister(OEBondArray)



IntVector = OEIntVector
FloatVector = OEFloatVector
DoubleVector = OEDoubleVector
AtomVector = OEAtomVector
BondVector = OEBondVector



def GetMainDict() -> "PyObject *":
    """GetMainDict() -> PyObject *"""
    return _oechem.GetMainDict()

def TypeToPyString(type: 'void const *') -> "PyObject *":
    """TypeToPyString(void const * type) -> PyObject *"""
    return _oechem.TypeToPyString(type)
class OEInternalFunctionPointer(object):
    """Proxy of C++ OEInternalFunctionPointer 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__(OEInternalFunctionPointer self) -> OEInternalFunctionPointer
        __init__(OEInternalFunctionPointer self, void const * type, GenericDataGetFunc getter, GenericDataSetFunc setter, GenericDataSetFunc adder) -> OEInternalFunctionPointer
        """
        this = _oechem.new_OEInternalFunctionPointer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Add(self, b: 'OEBase', tag: 'unsigned int', data: 'PyObject *') -> "bool":
        """Add(OEInternalFunctionPointer self, OEBase b, unsigned int tag, PyObject * data) -> bool"""
        return _oechem.OEInternalFunctionPointer_Add(self, b, tag, data)

    __swig_destroy__ = _oechem.delete_OEInternalFunctionPointer
    __del__ = lambda self: None
OEInternalFunctionPointer_swigregister = _oechem.OEInternalFunctionPointer_swigregister
OEInternalFunctionPointer_swigregister(OEInternalFunctionPointer)


def OEInternalGetGenericData(type: 'void const *') -> "OEInternalFunctionPointer *":
    """OEInternalGetGenericData(void const * type) -> OEInternalFunctionPointer"""
    return _oechem.OEInternalGetGenericData(type)

def AddData(*args) -> "PyObject *":
    """
    AddData(OEBase * arg1, unsigned int tag, PyObject * object) -> PyObject
    AddData(OEBase * arg1, unsigned int tag, PyObject * object, PyObject * type) -> PyObject *
    """
    return _oechem.AddData(*args)

def OEGetBitCounts(a: 'OEBitVector', b: 'OEBitVector') -> "PyObject *":
    """OEGetBitCounts(OEBitVector a, OEBitVector b) -> PyObject *"""
    return _oechem.OEGetBitCounts(a, b)

def OEBitVectorNumWords(bits: 'size_t') -> "size_t":
    """OEBitVectorNumWords(size_t bits) -> size_t"""
    return _oechem.OEBitVectorNumWords(bits)

def OEBitVectorNumBytes(bits: 'size_t') -> "size_t":
    """OEBitVectorNumBytes(size_t bits) -> size_t"""
    return _oechem.OEBitVectorNumBytes(bits)
class OEBitVector(object):
    """Proxy of C++ OESystem::OEBitVector 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::OEBitVector self) -> OEBitVector
        __init__(OESystem::OEBitVector self, unsigned char const * data, unsigned int size) -> OEBitVector
        __init__(OESystem::OEBitVector self, unsigned int size) -> OEBitVector
        __init__(OESystem::OEBitVector self, OERandom & rand, unsigned int size) -> OEBitVector
        __init__(OESystem::OEBitVector self, OEBitVector src) -> OEBitVector
        """
        this = _oechem.new_OEBitVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBitVector
    __del__ = lambda self: None

    def GetSize(self) -> "unsigned int":
        """GetSize(OEBitVector self) -> unsigned int"""
        return _oechem.OEBitVector_GetSize(self)


    def SetData(self, data: 'unsigned char const *', nbits: 'unsigned int') -> "void":
        """SetData(OEBitVector self, unsigned char const * data, unsigned int nbits)"""
        return _oechem.OEBitVector_SetData(self, data, nbits)


    def GetData(self) -> "unsigned char const *":
        """GetData(OEBitVector self) -> unsigned char const *"""
        return _oechem.OEBitVector_GetData(self)


    def SetSize(self, bits: 'unsigned int') -> "void":
        """SetSize(OEBitVector self, unsigned int bits)"""
        return _oechem.OEBitVector_SetSize(self, bits)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEBitVector self) -> bool"""
        return _oechem.OEBitVector_IsEmpty(self)


    def IsBitOn(self, bit: 'unsigned int') -> "bool":
        """IsBitOn(OEBitVector self, unsigned int bit) -> bool"""
        return _oechem.OEBitVector_IsBitOn(self, bit)


    def SetBitOn(self, bit: 'unsigned int') -> "void":
        """SetBitOn(OEBitVector self, unsigned int bit)"""
        return _oechem.OEBitVector_SetBitOn(self, bit)


    def SetBitOff(self, bit: 'unsigned int') -> "void":
        """SetBitOff(OEBitVector self, unsigned int bit)"""
        return _oechem.OEBitVector_SetBitOff(self, bit)


    def SetRangeOn(self, start: 'unsigned int', end: 'unsigned int') -> "void":
        """SetRangeOn(OEBitVector self, unsigned int start, unsigned int end)"""
        return _oechem.OEBitVector_SetRangeOn(self, start, end)


    def SetRangeOff(self, start: 'unsigned int', end: 'unsigned int') -> "void":
        """SetRangeOff(OEBitVector self, unsigned int start, unsigned int end)"""
        return _oechem.OEBitVector_SetRangeOff(self, start, end)


    def ToggleBit(self, bit: 'unsigned int') -> "void":
        """ToggleBit(OEBitVector self, unsigned int bit)"""
        return _oechem.OEBitVector_ToggleBit(self, bit)


    def ClearBits(self) -> "void":
        """ClearBits(OEBitVector self)"""
        return _oechem.OEBitVector_ClearBits(self)


    def NegateBits(self) -> "void":
        """NegateBits(OEBitVector self)"""
        return _oechem.OEBitVector_NegateBits(self)


    def CountBits(self) -> "unsigned int":
        """CountBits(OEBitVector self) -> unsigned int"""
        return _oechem.OEBitVector_CountBits(self)


    def FirstBit(self) -> "int":
        """FirstBit(OEBitVector self) -> int"""
        return _oechem.OEBitVector_FirstBit(self)


    def PrevBit(self, arg2: 'unsigned int') -> "int":
        """PrevBit(OEBitVector self, unsigned int arg2) -> int"""
        return _oechem.OEBitVector_PrevBit(self, arg2)


    def NextBit(self, arg2: 'unsigned int') -> "int":
        """NextBit(OEBitVector self, unsigned int arg2) -> int"""
        return _oechem.OEBitVector_NextBit(self, arg2)


    def LastBit(self) -> "int":
        """LastBit(OEBitVector self) -> int"""
        return _oechem.OEBitVector_LastBit(self)


    def __iand__(self, arg2: 'OEBitVector') -> "OESystem::OEBitVector &":
        """__iand__(OEBitVector self, OEBitVector arg2) -> OEBitVector"""
        return _oechem.OEBitVector___iand__(self, arg2)


    def __isub__(self, arg2: 'OEBitVector') -> "OESystem::OEBitVector &":
        """__isub__(OEBitVector self, OEBitVector arg2) -> OEBitVector"""
        return _oechem.OEBitVector___isub__(self, arg2)


    def __ior__(self, *args) -> "OESystem::OEBitVector &":
        """
        __ior__(OEBitVector self, OEBitVector arg2) -> OEBitVector
        __ior__(OEBitVector self, unsigned int bit) -> OEBitVector
        """
        return _oechem.OEBitVector___ior__(self, *args)


    def __lt__(self, other: 'OEBitVector') -> "bool":
        """__lt__(OEBitVector self, OEBitVector other) -> bool"""
        return _oechem.OEBitVector___lt__(self, other)


    def __ixor__(self, *args) -> "OESystem::OEBitVector &":
        """
        __ixor__(OEBitVector self, OEBitVector arg2) -> OEBitVector
        __ixor__(OEBitVector self, unsigned int bit) -> OEBitVector
        """
        return _oechem.OEBitVector___ixor__(self, *args)


    def __getitem__(self, bit: 'unsigned int') -> "bool":
        """__getitem__(OEBitVector self, unsigned int bit) -> bool"""
        return _oechem.OEBitVector___getitem__(self, bit)


    def FromHexString(self, bvs: 'char const *') -> "void":
        """FromHexString(OEBitVector self, char const * bvs)"""
        return _oechem.OEBitVector_FromHexString(self, bvs)


    def ToHexString(self) -> "std::string":
        """ToHexString(OEBitVector self) -> std::string"""
        return _oechem.OEBitVector_ToHexString(self)


    def __and__(self, o): return OEBitVectorAnd(self, o) 


    def __or__(self, o): return OEBitVectorOr(self, o) 


    def __xor__(self, o): return OEBitVectorXor(self, o) 


    def __sub__(self, o): return OEBitVectorSub(self, o) 


    def __eq__(self, o): return OEBitVectorEqual(self, o) 


    def __not__(self): return OEBitVectorNot(self) 

OEBitVector_swigregister = _oechem.OEBitVector_swigregister
OEBitVector_swigregister(OEBitVector)
cvar = _oechem.cvar
Magic = cvar.Magic
Int = cvar.Int
UInt = cvar.UInt
Float = cvar.Float
Double = cvar.Double
Bool = cvar.Bool
String = cvar.String
Char = cvar.Char
UChar = cvar.UChar
Short = cvar.Short
UShort = cvar.UShort


def OEBitVectorNot(bv: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorNot(OEBitVector bv) -> OEBitVector"""
    return _oechem.OEBitVectorNot(bv)

def OEBitVectorOr(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorOr(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorOr(a, b)

def OEBitVectorAnd(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorAnd(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorAnd(a, b)

def OEBitVectorXor(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorXor(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorXor(a, b)

def OEBitVectorSub(a: 'OEBitVector', b: 'OEBitVector') -> "OESystem::OEBitVector":
    """OEBitVectorSub(OEBitVector a, OEBitVector b) -> OEBitVector"""
    return _oechem.OEBitVectorSub(a, b)

def OEBitVectorEqual(a: 'OEBitVector', b: 'OEBitVector') -> "bool":
    """OEBitVectorEqual(OEBitVector a, OEBitVector b) -> bool"""
    return _oechem.OEBitVectorEqual(a, b)

def OETanimoto(a: 'OEBitVector', b: 'OEBitVector') -> "double":
    """OETanimoto(OEBitVector a, OEBitVector b) -> double"""
    return _oechem.OETanimoto(a, b)

def OECopyBits(*args) -> "void":
    """
    OECopyBits(std::vector< bool > & vb, OEBitVector bv)
    OECopyBits(OEBitVector bv, std::vector< bool > const & vb)
    """
    return _oechem.OECopyBits(*args)

def OEMakeHex(*args) -> "bool":
    """
    OEMakeHex(std::string & arg1, std::vector< bool > const & arg2, unsigned int columns=0) -> bool
    OEMakeHex(std::string & arg1, std::vector< bool > const & arg2) -> bool
    OEMakeHex(std::string & hex, OEBitVector arg2, unsigned int columns=0) -> bool
    OEMakeHex(std::string & hex, OEBitVector arg2) -> bool
    """
    return _oechem.OEMakeHex(*args)

def OEParseHex(*args) -> "bool":
    """
    OEParseHex(std::vector< bool > & arg1, std::string const & arg2) -> bool
    OEParseHex(OEBitVector arg1, std::string const & arg2) -> bool
    """
    return _oechem.OEParseHex(*args)
class OEDots(object):
    """Proxy of C++ OESystem::OEDots 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::OEDots self, unsigned int bigstep, unsigned int smallstep, char const * objectname, char const * action) -> OEDots
        __init__(OESystem::OEDots self, unsigned int bigstep, unsigned int smallstep, char const * objectname) -> OEDots
        __init__(OESystem::OEDots self, unsigned int bigstep, unsigned int smallstep) -> OEDots
        """
        this = _oechem.new_OEDots(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetCounts(self) -> "unsigned int":
        """GetCounts(OEDots self) -> unsigned int"""
        return _oechem.OEDots_GetCounts(self)


    def GetBigStep(self) -> "unsigned int":
        """GetBigStep(OEDots self) -> unsigned int"""
        return _oechem.OEDots_GetBigStep(self)


    def SetBigStep(self, s: 'unsigned int') -> "void":
        """SetBigStep(OEDots self, unsigned int s)"""
        return _oechem.OEDots_SetBigStep(self, s)


    def GetSmallStep(self) -> "unsigned int":
        """GetSmallStep(OEDots self) -> unsigned int"""
        return _oechem.OEDots_GetSmallStep(self)


    def SetSmallStep(self, s: 'unsigned int') -> "void":
        """SetSmallStep(OEDots self, unsigned int s)"""
        return _oechem.OEDots_SetSmallStep(self, s)


    def Total(self) -> "void":
        """Total(OEDots self)"""
        return _oechem.OEDots_Total(self)


    def Update(self, step: 'unsigned int'=1) -> "void":
        """
        Update(OEDots self, unsigned int step=1)
        Update(OEDots self)
        """
        return _oechem.OEDots_Update(self, step)

    __swig_destroy__ = _oechem.delete_OEDots
    __del__ = lambda self: None
OEDots_swigregister = _oechem.OEDots_swigregister
OEDots_swigregister(OEDots)

class OEThreadedDots(object):
    """Proxy of C++ OESystem::OEThreadedDots 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::OEThreadedDots self, unsigned int bigstep, unsigned int smallstep, char const * objectname) -> OEThreadedDots
        __init__(OESystem::OEThreadedDots self, unsigned int bigstep, unsigned int smallstep) -> OEThreadedDots
        """
        this = _oechem.new_OEThreadedDots(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEThreadedDots
    __del__ = lambda self: None

    def Total(self) -> "void":
        """Total(OEThreadedDots self)"""
        return _oechem.OEThreadedDots_Total(self)


    def Update(self, step: 'unsigned int'=1) -> "void":
        """
        Update(OEThreadedDots self, unsigned int step=1)
        Update(OEThreadedDots self)
        """
        return _oechem.OEThreadedDots_Update(self, step)

OEThreadedDots_swigregister = _oechem.OEThreadedDots_swigregister
OEThreadedDots_swigregister(OEThreadedDots)

class OEStopwatch(object):
    """Proxy of C++ OESystem::OEStopwatch class."""

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

    def __init__(self):
        """__init__(OESystem::OEStopwatch self) -> OEStopwatch"""
        this = _oechem.new_OEStopwatch()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Start(self) -> "void":
        """Start(OEStopwatch self)"""
        return _oechem.OEStopwatch_Start(self)


    def Lap(self) -> "float":
        """Lap(OEStopwatch self) -> float"""
        return _oechem.OEStopwatch_Lap(self)


    def Elapsed(self) -> "float":
        """Elapsed(OEStopwatch self) -> float"""
        return _oechem.OEStopwatch_Elapsed(self)

    __swig_destroy__ = _oechem.delete_OEStopwatch
    __del__ = lambda self: None
OEStopwatch_swigregister = _oechem.OEStopwatch_swigregister
OEStopwatch_swigregister(OEStopwatch)

class OEWallTimer(object):
    """Proxy of C++ OESystem::OEWallTimer class."""

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

    def __init__(self):
        """__init__(OESystem::OEWallTimer self) -> OEWallTimer"""
        this = _oechem.new_OEWallTimer()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Start(self) -> "void":
        """Start(OEWallTimer self)"""
        return _oechem.OEWallTimer_Start(self)


    def Lap(self) -> "double":
        """Lap(OEWallTimer self) -> double"""
        return _oechem.OEWallTimer_Lap(self)


    def Elapsed(self) -> "double":
        """Elapsed(OEWallTimer self) -> double"""
        return _oechem.OEWallTimer_Elapsed(self)

    __swig_destroy__ = _oechem.delete_OEWallTimer
    __del__ = lambda self: None
OEWallTimer_swigregister = _oechem.OEWallTimer_swigregister
OEWallTimer_swigregister(OEWallTimer)

class OECycleTimer(object):
    """Proxy of C++ OESystem::OECycleTimer class."""

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

    def __init__(self):
        """__init__(OESystem::OECycleTimer self) -> OECycleTimer"""
        this = _oechem.new_OECycleTimer()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Start(self) -> "void":
        """Start(OECycleTimer self)"""
        return _oechem.OECycleTimer_Start(self)


    def Lap(self) -> "OEULongLong":
        """Lap(OECycleTimer self) -> OEULongLong"""
        return _oechem.OECycleTimer_Lap(self)


    def Elapsed(self) -> "OEULongLong":
        """Elapsed(OECycleTimer self) -> OEULongLong"""
        return _oechem.OECycleTimer_Elapsed(self)

    __swig_destroy__ = _oechem.delete_OECycleTimer
    __del__ = lambda self: None
OECycleTimer_swigregister = _oechem.OECycleTimer_swigregister
OECycleTimer_swigregister(OECycleTimer)


def OESetMemPoolMode(mode: 'unsigned int') -> "void":
    """OESetMemPoolMode(unsigned int mode)"""
    return _oechem.OESetMemPoolMode(mode)

def OEGetMemPoolMode() -> "unsigned int":
    """OEGetMemPoolMode() -> unsigned int"""
    return _oechem.OEGetMemPoolMode()

def OESetThreadSafe(arg1: 'bool') -> "void":
    """OESetThreadSafe(bool arg1)"""
    return _oechem.OESetThreadSafe(arg1)

def OEGetThreadSafe() -> "bool":
    """OEGetThreadSafe() -> bool"""
    return _oechem.OEGetThreadSafe()
class OEBaseData(object):
    """Proxy of C++ OESystem::OEBaseData class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEBaseData
    __del__ = lambda self: None

    def GetTag(self) -> "unsigned int":
        """GetTag(OEBaseData self) -> unsigned int"""
        return _oechem.OEBaseData_GetTag(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBaseData self) -> void const *"""
        return _oechem.OEBaseData_GetDataType(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OEBaseData self) -> unsigned int"""
        return _oechem.OEBaseData_GetSize(self)


    def CreateCopy(self) -> "OESystem::OEBaseData *":
        """CreateCopy(OEBaseData self) -> OEBaseData"""
        return _oechem.OEBaseData_CreateCopy(self)


    def GetData(self) -> "PyObject *":
        """GetData(OEBaseData self) -> PyObject *"""
        return _oechem.OEBaseData_GetData(self)

OEBaseData_swigregister = _oechem.OEBaseData_swigregister
OEBaseData_swigregister(OEBaseData)

class OEBase(object):
    """Proxy of C++ OESystem::OEBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBase self)"""
        return _oechem.OEBase_Clear(self)


    def SetBaseData(self, arg2: 'OEBaseData') -> "bool":
        """SetBaseData(OEBase self, OEBaseData arg2) -> bool"""
        return _oechem.OEBase_SetBaseData(self, arg2)


    def AddBaseData(self, arg2: 'OEBaseData') -> "bool":
        """AddBaseData(OEBase self, OEBaseData arg2) -> bool"""
        return _oechem.OEBase_AddBaseData(self, arg2)


    def HasData(self, *args) -> "bool":
        """
        HasData(OEBase self, char const * tag) -> bool
        HasData(OEBase self, unsigned int tag) -> bool
        """
        return _oechem.OEBase_HasData(self, *args)


    def DeleteData(self, *args) -> "bool":
        """
        DeleteData(OEBase self, char const * tag) -> bool
        DeleteData(OEBase self, unsigned int tag) -> bool
        """
        return _oechem.OEBase_DeleteData(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBase self) -> void const *"""
        return _oechem.OEBase_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEBase self, void const * arg2) -> bool"""
        return _oechem.OEBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEBase self) -> OEBase"""
        return _oechem.OEBase_CreateCopy(self)


    def GetDataIter(self, *args) -> "OESystem::OEIterBase< OESystem::OEBaseData > *":
        """
        GetDataIter(OEBase self) -> OESystem::OEIterBase< OESystem::OEBaseData >
        GetDataIter(OEBase self, unsigned int tag) -> OESystem::OEIterBase< OESystem::OEBaseData > *
        """
        return _oechem.OEBase_GetDataIter(self, *args)


    def SetBoolData(self, *args) -> "bool":
        """
        SetBoolData(OEBase self, char const * tag, bool t) -> bool
        SetBoolData(OEBase self, unsigned int tag, bool t) -> bool
        """
        return _oechem.OEBase_SetBoolData(self, *args)


    def GetBoolData(self, *args) -> "bool":
        """
        GetBoolData(OEBase self, char const * tag) -> bool
        GetBoolData(OEBase self, unsigned int tag) -> bool
        """
        return _oechem.OEBase_GetBoolData(self, *args)


    def SetIntData(self, *args) -> "bool":
        """
        SetIntData(OEBase self, char const * tag, int t) -> bool
        SetIntData(OEBase self, unsigned int tag, int t) -> bool
        """
        return _oechem.OEBase_SetIntData(self, *args)


    def GetIntData(self, *args) -> "int":
        """
        GetIntData(OEBase self, char const * tag) -> int
        GetIntData(OEBase self, unsigned int tag) -> int
        """
        return _oechem.OEBase_GetIntData(self, *args)


    def SetFloatData(self, *args) -> "bool":
        """
        SetFloatData(OEBase self, char const * tag, float t) -> bool
        SetFloatData(OEBase self, unsigned int tag, float t) -> bool
        """
        return _oechem.OEBase_SetFloatData(self, *args)


    def GetFloatData(self, *args) -> "float":
        """
        GetFloatData(OEBase self, char const * tag) -> float
        GetFloatData(OEBase self, unsigned int tag) -> float
        """
        return _oechem.OEBase_GetFloatData(self, *args)


    def SetDoubleData(self, *args) -> "bool":
        """
        SetDoubleData(OEBase self, char const * tag, double t) -> bool
        SetDoubleData(OEBase self, unsigned int tag, double t) -> bool
        """
        return _oechem.OEBase_SetDoubleData(self, *args)


    def GetDoubleData(self, *args) -> "double":
        """
        GetDoubleData(OEBase self, char const * tag) -> double
        GetDoubleData(OEBase self, unsigned int tag) -> double
        """
        return _oechem.OEBase_GetDoubleData(self, *args)


    def SetStringData(self, *args) -> "bool":
        """
        SetStringData(OEBase self, char const * tag, std::string const t) -> bool
        SetStringData(OEBase self, unsigned int tag, std::string const t) -> bool
        """
        return _oechem.OEBase_SetStringData(self, *args)


    def GetStringData(self, *args) -> "std::string const &":
        """
        GetStringData(OEBase self, char const * tag) -> std::string const
        GetStringData(OEBase self, unsigned int tag) -> std::string const &
        """
        return _oechem.OEBase_GetStringData(self, *args)


    def __lt__(self, other):
        return id(self) < id(other)



    def __le__(self, other):
        return id(self) <= id(other)



    def __gt__(self, other):
        return id(self) > id(other)



    def __ge__(self, other):
        return id(self) >= id(other)



    def __eq__(self, rhs):
        if not isinstance(rhs, OEBase):
            return False
        return self._py_equal(rhs)

    def __ne__(self, rhs):
        if not isinstance(rhs, OEBase):
            return True
        return not self._py_equal(rhs)


    def _py_equal(self, rhs: 'OEBase') -> "bool":
        """_py_equal(OEBase self, OEBase rhs) -> bool"""
        return _oechem.OEBase__py_equal(self, rhs)


    def __hash__(self):
        return hash(self.__gethash__())



    def __copy__(self):
    # All copy operations are deep copies
        return self.__deepcopy__({})



    def __deepcopy__(self, memodict):
    # Use OEBase::CreateCopy to make deep copies
        return self.CreateCopy()



    def __gethash__(self) -> "unsigned int":
        """__gethash__(OEBase self) -> unsigned int"""
        return _oechem.OEBase___gethash__(self)


    def GetData(self, *args) -> "PyObject *":
        """
        GetData(OEBase self, char * tag) -> PyObject
        GetData(OEBase self, unsigned int t) -> PyObject
        GetData(OEBase self) -> PyObject *
        """
        return _oechem.OEBase_GetData(self, *args)


    def SetData(self, *args) -> "PyObject *":
        """
        SetData(OEBase self, char const * tag, PyObject * object) -> PyObject
        SetData(OEBase self, unsigned int tag, PyObject * object) -> PyObject *
        """
        return _oechem.OEBase_SetData(self, *args)


    def AddData(self, *args) -> "PyObject *":
        """
        AddData(OEBase self, char const * tag, PyObject * object) -> PyObject
        AddData(OEBase self, unsigned int tag, PyObject * object) -> PyObject *
        """
        return _oechem.OEBase_AddData(self, *args)


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OEBase self) -> PyObject *"""
        return _oechem.OEBase_GetDataTypeAsLong(self)

OEBase_swigregister = _oechem.OEBase_swigregister
OEBase_swigregister(OEBase)

class OEContainer(OEBase):
    """Proxy of C++ OESystem::OEContainer 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::OEContainer self) -> OEContainer
        __init__(OESystem::OEContainer self, OEBase rhs) -> OEContainer
        """
        this = _oechem.new_OEContainer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEContainer
    __del__ = lambda self: None

    def GetDataType(self) -> "void const *":
        """GetDataType(OEContainer self) -> void const *"""
        return _oechem.OEContainer_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEContainer self, void const * type) -> bool"""
        return _oechem.OEContainer_IsDataType(self, type)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEContainer self) -> OEBase"""
        return _oechem.OEContainer_CreateCopy(self)

OEContainer_swigregister = _oechem.OEContainer_swigregister
OEContainer_swigregister(OEContainer)


def OECopyBaseData(dst: 'OEBase', src: 'OEBase') -> "void":
    """OECopyBaseData(OEBase dst, OEBase src)"""
    return _oechem.OECopyBaseData(dst, src)

def OEHasTag(*args) -> "bool":
    """
    OEHasTag(unsigned int tag) -> bool
    OEHasTag(std::string const & s) -> bool
    """
    return _oechem.OEHasTag(*args)

def OEGetTag(*args) -> "unsigned int":
    """
    OEGetTag(unsigned int arg1) -> char const
    OEGetTag(char const * arg1) -> unsigned int
    """
    return _oechem.OEGetTag(*args)

def OEGetOEBReturnString(idx: 'unsigned int') -> "char const *":
    """OEGetOEBReturnString(unsigned int idx) -> char const *"""
    return _oechem.OEGetOEBReturnString(idx)
class OEReadFxnBase(object):
    """Proxy of C++ OESystem::OEReadFxnBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEReadFxnBase
    __del__ = lambda self: None

    def GetTag(self) -> "char const *":
        """GetTag(OEReadFxnBase self) -> char const *"""
        return _oechem.OEReadFxnBase_GetTag(self)


    def GetType(self) -> "void const *":
        """GetType(OEReadFxnBase self) -> void const *"""
        return _oechem.OEReadFxnBase_GetType(self)


    def CreateCopy(self) -> "OESystem::OEReadFxnBase *":
        """CreateCopy(OEReadFxnBase self) -> OEReadFxnBase"""
        return _oechem.OEReadFxnBase_CreateCopy(self)

OEReadFxnBase_swigregister = _oechem.OEReadFxnBase_swigregister
OEReadFxnBase_swigregister(OEReadFxnBase)
Rad2Deg = cvar.Rad2Deg
Deg2Rad = cvar.Deg2Rad
Pi = cvar.Pi
Pi2 = cvar.Pi2

class OEDefaultReadFxn(OEReadFxnBase):
    """Proxy of C++ OESystem::OEDefaultReadFxn class."""

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

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

    def __call__(self, arg2: 'oeistream', arg3: 'OEULongLong', arg4: 'char const *', arg5: 'OEBinaryIOHandlerBase') -> "unsigned int":
        """__call__(OEDefaultReadFxn self, oeistream arg2, OEULongLong arg3, char const * arg4, OEBinaryIOHandlerBase arg5) -> unsigned int"""
        return _oechem.OEDefaultReadFxn___call__(self, arg2, arg3, arg4, arg5)

    __swig_destroy__ = _oechem.delete_OEDefaultReadFxn
    __del__ = lambda self: None
OEDefaultReadFxn_swigregister = _oechem.OEDefaultReadFxn_swigregister
OEDefaultReadFxn_swigregister(OEDefaultReadFxn)

class OEWriteFxnBase(object):
    """Proxy of C++ OESystem::OEWriteFxnBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEWriteFxnBase
    __del__ = lambda self: None

    def GetTag(self) -> "char const *":
        """GetTag(OEWriteFxnBase self) -> char const *"""
        return _oechem.OEWriteFxnBase_GetTag(self)


    def GetType(self) -> "void const *":
        """GetType(OEWriteFxnBase self) -> void const *"""
        return _oechem.OEWriteFxnBase_GetType(self)


    def CreateCopy(self) -> "OESystem::OEWriteFxnBase *":
        """CreateCopy(OEWriteFxnBase self) -> OEWriteFxnBase"""
        return _oechem.OEWriteFxnBase_CreateCopy(self)

OEWriteFxnBase_swigregister = _oechem.OEWriteFxnBase_swigregister
OEWriteFxnBase_swigregister(OEWriteFxnBase)

class OEDefaultWriteFxn(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEDefaultWriteFxn class."""

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

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

    def __call__(self, arg2: 'oeostream', arg3: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEDefaultWriteFxn self, oeostream arg2, OEBinaryIOHandlerBase arg3) -> bool"""
        return _oechem.OEDefaultWriteFxn___call__(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEDefaultWriteFxn
    __del__ = lambda self: None
OEDefaultWriteFxn_swigregister = _oechem.OEDefaultWriteFxn_swigregister
OEDefaultWriteFxn_swigregister(OEDefaultWriteFxn)

class OEBinaryIOHandlerBase(OEBase):
    """Proxy of C++ OESystem::OEBinaryIOHandlerBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEBinaryIOHandlerBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBinaryIOHandlerBase self)"""
        return _oechem.OEBinaryIOHandlerBase_Clear(self)


    def SetReadFxn(self, arg2: 'OEReadFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2, bool makedefault=False) -> bool
        SetReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandlerBase_SetReadFxn(self, arg2, makedefault)


    def SetWriteFxn(self, arg2: 'OEWriteFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2, bool makedefault=False) -> bool
        SetWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandlerBase_SetWriteFxn(self, arg2, makedefault)


    def GetDefaultReadFxn(self) -> "OESystem::OEReadFxnBase const &":
        """GetDefaultReadFxn(OEBinaryIOHandlerBase self) -> OEReadFxnBase"""
        return _oechem.OEBinaryIOHandlerBase_GetDefaultReadFxn(self)


    def GetDefaultWriteFxn(self) -> "OESystem::OEWriteFxnBase const &":
        """GetDefaultWriteFxn(OEBinaryIOHandlerBase self) -> OEWriteFxnBase"""
        return _oechem.OEBinaryIOHandlerBase_GetDefaultWriteFxn(self)


    def ReplaceReadFxn(self, arg2: 'OEReadFxnBase') -> "bool":
        """ReplaceReadFxn(OEBinaryIOHandlerBase self, OEReadFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandlerBase_ReplaceReadFxn(self, arg2)


    def ReplaceWriteFxn(self, arg2: 'OEWriteFxnBase') -> "bool":
        """ReplaceWriteFxn(OEBinaryIOHandlerBase self, OEWriteFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandlerBase_ReplaceWriteFxn(self, arg2)


    def GetReadFxns(self) -> "OESystem::OEIterBase< OESystem::OEReadFxnBase > *":
        """GetReadFxns(OEBinaryIOHandlerBase self) -> OESystem::OEIterBase< OESystem::OEReadFxnBase > *"""
        return _oechem.OEBinaryIOHandlerBase_GetReadFxns(self)


    def GetWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxnBase > *":
        """GetWriteFxns(OEBinaryIOHandlerBase self) -> OESystem::OEIterBase< OESystem::OEWriteFxnBase > *"""
        return _oechem.OEBinaryIOHandlerBase_GetWriteFxns(self)


    def SetBaseWriteFxn(self, arg2: 'OESystem::OEWriteFxn< OESystem::OEBaseData > const &') -> "bool":
        """SetBaseWriteFxn(OEBinaryIOHandlerBase self, OESystem::OEWriteFxn< OESystem::OEBaseData > const & arg2) -> bool"""
        return _oechem.OEBinaryIOHandlerBase_SetBaseWriteFxn(self, arg2)


    def GetBaseWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *":
        """GetBaseWriteFxns(OEBinaryIOHandlerBase self) -> OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *"""
        return _oechem.OEBinaryIOHandlerBase_GetBaseWriteFxns(self)

OEBinaryIOHandlerBase_swigregister = _oechem.OEBinaryIOHandlerBase_swigregister
OEBinaryIOHandlerBase_swigregister(OEBinaryIOHandlerBase)

class OEUnknownOEBData(object):
    """Proxy of C++ OESystem::OEUnknownOEBData 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::OEUnknownOEBData self) -> OEUnknownOEBData
        __init__(OESystem::OEUnknownOEBData self, oeistream ifs, void const * typ, OEULongLong len, char * tag, unsigned char tagtype) -> OEUnknownOEBData
        __init__(OESystem::OEUnknownOEBData self, OEUnknownOEBData rhs) -> OEUnknownOEBData
        """
        this = _oechem.new_OEUnknownOEBData(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnknownOEBData
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OEUnknownOEBData___nonzero__(self)



    def GetData(self) -> "char const *":
        """GetData(OEUnknownOEBData self) -> char const *"""
        return _oechem.OEUnknownOEBData_GetData(self)


    def GetLength(self) -> "size_t":
        """GetLength(OEUnknownOEBData self) -> size_t"""
        return _oechem.OEUnknownOEBData_GetLength(self)


    def GetType(self) -> "void const *":
        """GetType(OEUnknownOEBData self) -> void const *"""
        return _oechem.OEUnknownOEBData_GetType(self)


    def GetTag(self) -> "char const *":
        """GetTag(OEUnknownOEBData self) -> char const *"""
        return _oechem.OEUnknownOEBData_GetTag(self)


    def GetTagType(self) -> "unsigned char":
        """GetTagType(OEUnknownOEBData self) -> unsigned char"""
        return _oechem.OEUnknownOEBData_GetTagType(self)

OEUnknownOEBData_swigregister = _oechem.OEUnknownOEBData_swigregister
OEUnknownOEBData_swigregister(OEUnknownOEBData)


def OEBReadDataLength(*args) -> "OEULongLong":
    """
    OEBReadDataLength(oeistream arg1, OEULongLong maxLen) -> OEULongLong
    OEBReadDataLength(oeistream arg1) -> OEULongLong
    """
    return _oechem.OEBReadDataLength(*args)

def OEBWriteDataLength(*args) -> "bool":
    """
    OEBWriteDataLength(oeostream arg1, OEULongLong arg2) -> bool
    OEBWriteDataLength(oeostream arg1, unsigned int arg2) -> bool
    """
    return _oechem.OEBWriteDataLength(*args)

def OEBDataLengthBytes(*args) -> "unsigned int":
    """
    OEBDataLengthBytes(unsigned int arg1) -> unsigned int
    OEBDataLengthBytes(OEULongLong arg1) -> unsigned int
    """
    return _oechem.OEBDataLengthBytes(*args)

def OEBReadTag(*args) -> "bool":
    """
    OEBReadTag(oeistream ifs, char * tag, unsigned char & tagtype) -> bool
    OEBReadTag(oeistream ifs, char * tag) -> bool
    """
    return _oechem.OEBReadTag(*args)

def OEBPeekTag(*args) -> "bool":
    """
    OEBPeekTag(oeistream ifs, char * tag) -> bool
    OEBPeekTag(oeistream ifs, char * tag, unsigned char & tagtype) -> bool
    """
    return _oechem.OEBPeekTag(*args)

def OEBWriteTag(*args) -> "bool":
    """
    OEBWriteTag(oeostream ofs, char const * arg2) -> bool
    OEBWriteTag(oeostream ofs, char const * arg2, unsigned char tagtype) -> bool
    """
    return _oechem.OEBWriteTag(*args)

def OEBIntEndian(*args) -> "bool":
    """
    OEBIntEndian() -> unsigned char
    OEBIntEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBIntEndian(*args)

def OEBFloatEndian(*args) -> "bool":
    """
    OEBFloatEndian() -> unsigned char
    OEBFloatEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBFloatEndian(*args)

def OEBShortEndian(*args) -> "bool":
    """
    OEBShortEndian() -> unsigned char
    OEBShortEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBShortEndian(*args)

def OEBFPosTEndian(*args) -> "bool":
    """
    OEBFPosTEndian() -> unsigned char
    OEBFPosTEndian(unsigned int arg1) -> bool
    """
    return _oechem.OEBFPosTEndian(*args)

def OEIsIntLittleEndian() -> "bool":
    """OEIsIntLittleEndian() -> bool"""
    return _oechem.OEIsIntLittleEndian()

def OEIsFloatLittleEndian() -> "bool":
    """OEIsFloatLittleEndian() -> bool"""
    return _oechem.OEIsFloatLittleEndian()

def OEIsShortLittleEndian() -> "bool":
    """OEIsShortLittleEndian() -> bool"""
    return _oechem.OEIsShortLittleEndian()

def OEIsFPosTLittleEndian() -> "bool":
    """OEIsFPosTLittleEndian() -> bool"""
    return _oechem.OEIsFPosTLittleEndian()

def OEIsIntByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsIntByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsIntByteSwapRequired(dataIsLittleEndian)

def OEIsFloatByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsFloatByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsFloatByteSwapRequired(dataIsLittleEndian)

def OEIsShortByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsShortByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsShortByteSwapRequired(dataIsLittleEndian)

def OEIsFPosTByteSwapRequired(dataIsLittleEndian: 'bool') -> "bool":
    """OEIsFPosTByteSwapRequired(bool dataIsLittleEndian) -> bool"""
    return _oechem.OEIsFPosTByteSwapRequired(dataIsLittleEndian)
class OEBinaryIOHandler(OEBinaryIOHandlerBase):
    """Proxy of C++ OESystem::OEBinaryIOHandler 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::OEBinaryIOHandler self) -> OEBinaryIOHandler
        __init__(OESystem::OEBinaryIOHandler self, OEBinaryIOHandler arg2) -> OEBinaryIOHandler
        __init__(OESystem::OEBinaryIOHandler self, OEBinaryIOHandlerBase arg2) -> OEBinaryIOHandler
        """
        this = _oechem.new_OEBinaryIOHandler(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryIOHandler
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBinaryIOHandler self)"""
        return _oechem.OEBinaryIOHandler_Clear(self)


    def SetReadFxn(self, arg2: 'OEReadFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2, bool makedefault=False) -> bool
        SetReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandler_SetReadFxn(self, arg2, makedefault)


    def SetWriteFxn(self, arg2: 'OEWriteFxnBase', makedefault: 'bool'=False) -> "bool":
        """
        SetWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2, bool makedefault=False) -> bool
        SetWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2) -> bool
        """
        return _oechem.OEBinaryIOHandler_SetWriteFxn(self, arg2, makedefault)


    def SetBaseWriteFxn(self, arg2: 'OESystem::OEWriteFxn< OESystem::OEBaseData > const &') -> "bool":
        """SetBaseWriteFxn(OEBinaryIOHandler self, OESystem::OEWriteFxn< OESystem::OEBaseData > const & arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_SetBaseWriteFxn(self, arg2)


    def GetDefaultReadFxn(self) -> "OESystem::OEReadFxnBase const &":
        """GetDefaultReadFxn(OEBinaryIOHandler self) -> OEReadFxnBase"""
        return _oechem.OEBinaryIOHandler_GetDefaultReadFxn(self)


    def GetDefaultWriteFxn(self) -> "OESystem::OEWriteFxnBase const &":
        """GetDefaultWriteFxn(OEBinaryIOHandler self) -> OEWriteFxnBase"""
        return _oechem.OEBinaryIOHandler_GetDefaultWriteFxn(self)


    def ReplaceReadFxn(self, arg2: 'OEReadFxnBase') -> "bool":
        """ReplaceReadFxn(OEBinaryIOHandler self, OEReadFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_ReplaceReadFxn(self, arg2)


    def ReplaceWriteFxn(self, arg2: 'OEWriteFxnBase') -> "bool":
        """ReplaceWriteFxn(OEBinaryIOHandler self, OEWriteFxnBase arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_ReplaceWriteFxn(self, arg2)


    def GetReadFxns(self) -> "OESystem::OEIterBase< OESystem::OEReadFxnBase > *":
        """GetReadFxns(OEBinaryIOHandler self) -> OESystem::OEIterBase< OESystem::OEReadFxnBase > *"""
        return _oechem.OEBinaryIOHandler_GetReadFxns(self)


    def GetWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxnBase > *":
        """GetWriteFxns(OEBinaryIOHandler self) -> OESystem::OEIterBase< OESystem::OEWriteFxnBase > *"""
        return _oechem.OEBinaryIOHandler_GetWriteFxns(self)


    def GetBaseWriteFxns(self) -> "OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *":
        """GetBaseWriteFxns(OEBinaryIOHandler self) -> OESystem::OEIterBase< OESystem::OEWriteFxn< OESystem::OEBaseData > > *"""
        return _oechem.OEBinaryIOHandler_GetBaseWriteFxns(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEBinaryIOHandler self) -> OEBase"""
        return _oechem.OEBinaryIOHandler_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBinaryIOHandler self) -> void const *"""
        return _oechem.OEBinaryIOHandler_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEBinaryIOHandler self, void const * arg2) -> bool"""
        return _oechem.OEBinaryIOHandler_IsDataType(self, arg2)

OEBinaryIOHandler_swigregister = _oechem.OEBinaryIOHandler_swigregister
OEBinaryIOHandler_swigregister(OEBinaryIOHandler)


def OERegisterOEBInitializer(initializer: 'OESystem::OEBHandInitializer') -> "void":
    """OERegisterOEBInitializer(OESystem::OEBHandInitializer initializer)"""
    return _oechem.OERegisterOEBInitializer(initializer)

def OEInitializeHandler(hand: 'OEBinaryIOHandlerBase') -> "void":
    """OEInitializeHandler(OEBinaryIOHandlerBase hand)"""
    return _oechem.OEInitializeHandler(hand)

def OEGetOEBInitializerCount() -> "oesize_t":
    """OEGetOEBInitializerCount() -> oesize_t"""
    return _oechem.OEGetOEBInitializerCount()
class OETracerBase(object):
    """Proxy of C++ OESystem::OETracerBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OETracerBase
    __del__ = lambda self: None

    def SetTask(self, task: 'std::string') -> "void":
        """SetTask(OETracerBase self, std::string task)"""
        return _oechem.OETracerBase_SetTask(self, task)


    def Push(self, task: 'std::string') -> "void":
        """Push(OETracerBase self, std::string task)"""
        return _oechem.OETracerBase_Push(self, task)


    def Pop(self) -> "void":
        """Pop(OETracerBase self)"""
        return _oechem.OETracerBase_Pop(self)


    def Refresh(self) -> "void":
        """Refresh(OETracerBase self)"""
        return _oechem.OETracerBase_Refresh(self)


    def SetProgress(self, *args) -> "void":
        """
        SetProgress(OETracerBase self, unsigned int current, unsigned int total)
        SetProgress(OETracerBase self, double percent)
        """
        return _oechem.OETracerBase_SetProgress(self, *args)


    def Aborted(self) -> "bool":
        """Aborted(OETracerBase self) -> bool"""
        return _oechem.OETracerBase_Aborted(self)

OETracerBase_swigregister = _oechem.OETracerBase_swigregister
OETracerBase_swigregister(OETracerBase)

class OENullTracer(OETracerBase):
    """Proxy of C++ OESystem::OENullTracer class."""

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

    def SetTask(self, arg2: 'std::string') -> "void":
        """SetTask(OENullTracer self, std::string arg2)"""
        return _oechem.OENullTracer_SetTask(self, arg2)


    def Push(self, arg2: 'std::string') -> "void":
        """Push(OENullTracer self, std::string arg2)"""
        return _oechem.OENullTracer_Push(self, arg2)


    def Pop(self) -> "void":
        """Pop(OENullTracer self)"""
        return _oechem.OENullTracer_Pop(self)


    def Refresh(self) -> "void":
        """Refresh(OENullTracer self)"""
        return _oechem.OENullTracer_Refresh(self)


    def SetProgress(self, *args) -> "void":
        """
        SetProgress(OENullTracer self, unsigned int arg2, unsigned int arg3)
        SetProgress(OENullTracer self, double arg2)
        """
        return _oechem.OENullTracer_SetProgress(self, *args)


    def Aborted(self) -> "bool":
        """Aborted(OENullTracer self) -> bool"""
        return _oechem.OENullTracer_Aborted(self)


    def __init__(self):
        """__init__(OESystem::OENullTracer self) -> OENullTracer"""
        this = _oechem.new_OENullTracer()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OENullTracer
    __del__ = lambda self: None
OENullTracer_swigregister = _oechem.OENullTracer_swigregister
OENullTracer_swigregister(OENullTracer)

class OEPyTracerBase(OETracerBase):
    """Proxy of C++ OEPyTracerBase class."""

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

    def __init__(self):
        """__init__(OEPyTracerBase self) -> OEPyTracerBase"""
        if self.__class__ == OEPyTracerBase:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEPyTracerBase(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPyTracerBase
    __del__ = lambda self: None

    def SetTask(self, arg0: 'std::string') -> "void":
        """SetTask(OEPyTracerBase self, std::string arg0)"""
        return _oechem.OEPyTracerBase_SetTask(self, arg0)


    def Push(self, arg0: 'std::string') -> "void":
        """Push(OEPyTracerBase self, std::string arg0)"""
        return _oechem.OEPyTracerBase_Push(self, arg0)


    def Pop(self) -> "void":
        """Pop(OEPyTracerBase self)"""
        return _oechem.OEPyTracerBase_Pop(self)


    def Refresh(self) -> "void":
        """Refresh(OEPyTracerBase self)"""
        return _oechem.OEPyTracerBase_Refresh(self)


    def SetProgress(self, *args) -> "void":
        """
        SetProgress(OEPyTracerBase self, unsigned int arg0, unsigned int arg1)
        SetProgress(OEPyTracerBase self, double arg0)
        """
        return _oechem.OEPyTracerBase_SetProgress(self, *args)


    def Aborted(self) -> "bool":
        """Aborted(OEPyTracerBase self) -> bool"""
        return _oechem.OEPyTracerBase_Aborted(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEPyTracerBase(self)
        return weakref_proxy(self)
OEPyTracerBase_swigregister = _oechem.OEPyTracerBase_swigregister
OEPyTracerBase_swigregister(OEPyTracerBase)

class OEAnnotationWriteFxn(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEWriteFxn<(OESystem::OEAnnotation)> class."""

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

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

    def __call__(self, arg2: 'oeostream', arg3: 'OEAnnotation', arg4: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEAnnotationWriteFxn self, oeostream arg2, OEAnnotation arg3, OEBinaryIOHandlerBase arg4) -> bool"""
        return _oechem.OEAnnotationWriteFxn___call__(self, arg2, arg3, arg4)

    __swig_destroy__ = _oechem.delete_OEAnnotationWriteFxn
    __del__ = lambda self: None
OEAnnotationWriteFxn_swigregister = _oechem.OEAnnotationWriteFxn_swigregister
OEAnnotationWriteFxn_swigregister(OEAnnotationWriteFxn)

class OEColor(object):
    """Proxy of C++ OESystem::OEColor class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEColor self) -> OEColor
        __init__(OESystem::OEColor self, unsigned int r, unsigned int g, unsigned int b) -> OEColor
        __init__(OESystem::OEColor self, unsigned int r, unsigned int g, unsigned int b, unsigned int a) -> OEColor
        __init__(OESystem::OEColor self, unsigned char const * rgba) -> OEColor
        __init__(OESystem::OEColor self, unsigned int packed) -> OEColor
        __init__(OESystem::OEColor self, std::string const & text) -> OEColor
        __init__(OESystem::OEColor self, OEColor rhs) -> OEColor
        """
        this = _oechem.new_OEColor(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, rhs: 'OEColor') -> "bool":
        """__eq__(OEColor self, OEColor rhs) -> bool"""
        return _oechem.OEColor___eq__(self, rhs)


    def __ne__(self, rhs: 'OEColor') -> "bool":
        """__ne__(OEColor self, OEColor rhs) -> bool"""
        return _oechem.OEColor___ne__(self, rhs)


    def CreateCopy(self) -> "OESystem::OEColor *":
        """CreateCopy(OEColor self) -> OEColor"""
        return _oechem.OEColor_CreateCopy(self)


    def GetR(self) -> "unsigned int":
        """GetR(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetR(self)


    def GetG(self) -> "unsigned int":
        """GetG(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetG(self)


    def GetB(self) -> "unsigned int":
        """GetB(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetB(self)


    def GetA(self) -> "unsigned int":
        """GetA(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetA(self)


    def GetPackedColor(self) -> "unsigned int":
        """GetPackedColor(OEColor self) -> unsigned int"""
        return _oechem.OEColor_GetPackedColor(self)


    def GetText(self, a: 'bool'=False) -> "std::string":
        """
        GetText(OEColor self, bool a=False) -> std::string
        GetText(OEColor self) -> std::string
        """
        return _oechem.OEColor_GetText(self, a)


    def Set(self, *args) -> "OESystem::OEColor &":
        """
        Set(OEColor self, unsigned int r, unsigned int g, unsigned int b) -> OEColor
        Set(OEColor self, unsigned int r, unsigned int g, unsigned int b, unsigned int a) -> OEColor
        """
        return _oechem.OEColor_Set(self, *args)


    def SetR(self, r: 'unsigned int') -> "OESystem::OEColor &":
        """SetR(OEColor self, unsigned int r) -> OEColor"""
        return _oechem.OEColor_SetR(self, r)


    def SetG(self, g: 'unsigned int') -> "OESystem::OEColor &":
        """SetG(OEColor self, unsigned int g) -> OEColor"""
        return _oechem.OEColor_SetG(self, g)


    def SetB(self, b: 'unsigned int') -> "OESystem::OEColor &":
        """SetB(OEColor self, unsigned int b) -> OEColor"""
        return _oechem.OEColor_SetB(self, b)


    def SetA(self, a: 'unsigned int') -> "OESystem::OEColor &":
        """SetA(OEColor self, unsigned int a) -> OEColor"""
        return _oechem.OEColor_SetA(self, a)


    def SetPackedColor(self, color: 'unsigned int') -> "OESystem::OEColor &":
        """SetPackedColor(OEColor self, unsigned int color) -> OEColor"""
        return _oechem.OEColor_SetPackedColor(self, color)


    def SetRGBA(self, rgba: 'unsigned char const *') -> "OESystem::OEColor &":
        """SetRGBA(OEColor self, unsigned char const * rgba) -> OEColor"""
        return _oechem.OEColor_SetRGBA(self, rgba)


    def SetText(self, text: 'std::string const &') -> "OESystem::OEColor &":
        """SetText(OEColor self, std::string const & text) -> OEColor"""
        return _oechem.OEColor_SetText(self, text)


    def GetRGBA(self, *args) -> "PyObject *":
        """
        GetRGBA(OEColor self) -> unsigned char const
        GetRGBA(OEColor self) -> PyObject *
        """
        return _oechem.OEColor_GetRGBA(self, *args)


    def __str__(self) -> "std::string":
        """__str__(OEColor self) -> std::string"""
        return _oechem.OEColor___str__(self)


    def __repr__(self) -> "std::string":
        """__repr__(OEColor self) -> std::string"""
        return _oechem.OEColor___repr__(self)

    __swig_destroy__ = _oechem.delete_OEColor
    __del__ = lambda self: None
OEColor_swigregister = _oechem.OEColor_swigregister
OEColor_swigregister(OEColor)


def OEColorCreate(*args) -> "OESystem::OEColor":
    """
    OEColorCreate(double r, double g, double b) -> OEColor
    OEColorCreate(double r, double g, double b, double a) -> OEColor
    """
    return _oechem.OEColorCreate(*args)

def OEColorGet(*args) -> "void":
    """
    OEColorGet(OEColor arg1, float & r, float & g, float & b)
    OEColorGet(OEColor arg1, double & r, double & g, double & b)
    OEColorGet(OEColor arg1, float & r, float & g, float & b, float & a)
    OEColorGet(OEColor arg1, double & r, double & g, double & b, double & a)
    """
    return _oechem.OEColorGet(*args)

def OEColorSet(*args) -> "void":
    """
    OEColorSet(OEColor arg1, double r, double g, double b)
    OEColorSet(OEColor arg1, double r, double g, double b, double a)
    """
    return _oechem.OEColorSet(*args)

def OEColorPacked(r: 'unsigned int', g: 'unsigned int', b: 'unsigned int', a: 'unsigned int'=255) -> "unsigned int":
    """
    OEColorPacked(unsigned int r, unsigned int g, unsigned int b, unsigned int a=255) -> unsigned int
    OEColorPacked(unsigned int r, unsigned int g, unsigned int b) -> unsigned int
    """
    return _oechem.OEColorPacked(r, g, b, a)

def OEGetLightColors() -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetLightColors() -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetLightColors()

def OEGetVividColors() -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetVividColors() -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetVividColors()

def OEGetDeepColors() -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetDeepColors() -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetDeepColors()

def OEGetContrastColors(whiteblack: 'bool'=False) -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """
    OEGetContrastColors(bool whiteblack=False) -> OESystem::OEIterBase< OESystem::OEColor >
    OEGetContrastColors() -> OESystem::OEIterBase< OESystem::OEColor > *
    """
    return _oechem.OEGetContrastColors(whiteblack)

def OEGetColors(fromcolor: 'OEColor', tocolor: 'OEColor', nrcolors: 'unsigned int') -> "OESystem::OEIterBase< OESystem::OEColor > *":
    """OEGetColors(OEColor fromcolor, OEColor tocolor, unsigned int nrcolors) -> OESystem::OEIterBase< OESystem::OEColor > *"""
    return _oechem.OEGetColors(fromcolor, tocolor, nrcolors)
class OEColorIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEColor)> 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<(OESystem::OEColor)> self) -> OEColorIter
        __init__(OESystem::OEIter<(OESystem::OEColor)> self, OEColorIter rhs) -> OEColorIter
        __init__(OESystem::OEIter<(OESystem::OEColor)> self, OESystem::OEIterBase< OESystem::OEColor > * rhs) -> OEColorIter
        __init__(OESystem::OEIter<(OESystem::OEColor)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEColor >::NonConstA > * rhs) -> OEColorIter
        """
        this = _oechem.new_OEColorIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEColorIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEColor > *":
        """Copy(OEColorIter self) -> OESystem::OEIterBase< OESystem::OEColor > *"""
        return _oechem.OEColorIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEColorIter self, OESystem::OEIterBase< OESystem::OEColor > * ib)
        Push(OEColorIter self, OEColorIter iter)
        """
        return _oechem.OEColorIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEColor,OESystem::OEColor > const &') -> "void":
        """Sort(OEColorIter self, OESystem::OEBinaryPredicate< OESystem::OEColor,OESystem::OEColor > const & sort_criterion)"""
        return _oechem.OEColorIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEColor > &":
        """ToFirst(OEColorIter self) -> OEColorIter"""
        return _oechem.OEColorIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEColor > &":
        """ToLast(OEColorIter self) -> OEColorIter"""
        return _oechem.OEColorIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEColor &":
        """__ref__(OEColorIter self) -> OEColor"""
        return _oechem.OEColorIter___ref__(self)


    def IsValid(self):
      return _oechem.OEColorIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEColorIter self) -> PyObject *"""
        return _oechem.OEColorIter_next(self)


    def Target(self) -> "OESystem::OEColor &":
        """Target(OEColorIter self) -> OEColor"""
        return _oechem.OEColorIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEColor > &":
        """
        Next(OEColorIter self) -> OEColorIter
        Next(OEColorIter self, int i) -> OEColorIter
        """
        return _oechem.OEColorIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEColor > &":
        """
        Prev(OEColorIter self) -> OEColorIter
        Prev(OEColorIter self, int i) -> OEColorIter
        """
        return _oechem.OEColorIter_Prev(self, *args)

OEColorIter_swigregister = _oechem.OEColorIter_swigregister
OEColorIter_swigregister(OEColorIter)
OEBlack = cvar.OEBlack
OEWhite = cvar.OEWhite
OERed = cvar.OERed
OEGreen = cvar.OEGreen
OEBlue = cvar.OEBlue
OEYellow = cvar.OEYellow
OECyan = cvar.OECyan
OEMagenta = cvar.OEMagenta
OEOrange = cvar.OEOrange
OEPink = cvar.OEPink
OEGrey = cvar.OEGrey
OEPurple = cvar.OEPurple
OERoyalBlue = cvar.OERoyalBlue
OEOliveBrown = cvar.OEOliveBrown
OEOliveGreen = cvar.OEOliveGreen
OEOliveGrey = cvar.OEOliveGrey
OELimeGreen = cvar.OELimeGreen
OEDarkRed = cvar.OEDarkRed
OEDarkGreen = cvar.OEDarkGreen
OEDarkBlue = cvar.OEDarkBlue
OEDarkYellow = cvar.OEDarkYellow
OEDarkCyan = cvar.OEDarkCyan
OEDarkMagenta = cvar.OEDarkMagenta
OEDarkOrange = cvar.OEDarkOrange
OEDarkGrey = cvar.OEDarkGrey
OEDarkRose = cvar.OEDarkRose
OEDarkBrown = cvar.OEDarkBrown
OEDarkSalmon = cvar.OEDarkSalmon
OEDarkPurple = cvar.OEDarkPurple
OEMediumBrown = cvar.OEMediumBrown
OEMediumBlue = cvar.OEMediumBlue
OEMediumYellow = cvar.OEMediumYellow
OEMediumGreen = cvar.OEMediumGreen
OEMediumOrange = cvar.OEMediumOrange
OEMediumPurple = cvar.OEMediumPurple
OEMediumSalmon = cvar.OEMediumSalmon
OELightBlue = cvar.OELightBlue
OELightGrey = cvar.OELightGrey
OELightPurple = cvar.OELightPurple
OELightSalmon = cvar.OELightSalmon
OELightBrown = cvar.OELightBrown
OELightOrange = cvar.OELightOrange
OELightGreen = cvar.OELightGreen
OEBlueTint = cvar.OEBlueTint
OEBrown = cvar.OEBrown
OEMandarin = cvar.OEMandarin
OEGreenBlue = cvar.OEGreenBlue
OEGreenTint = cvar.OEGreenTint
OEHotPink = cvar.OEHotPink
OEPinkTint = cvar.OEPinkTint
OERedOrange = cvar.OERedOrange
OESeaGreen = cvar.OESeaGreen
OESkyBlue = cvar.OESkyBlue
OEViolet = cvar.OEViolet
OEYellowTint = cvar.OEYellowTint
OETransparentColor = cvar.OETransparentColor
OECopper = cvar.OECopper
OEGold = cvar.OEGold
OESilver = cvar.OESilver
OEPewter = cvar.OEPewter
OEBrass = cvar.OEBrass

class OEColorStop(object):
    """Proxy of C++ OESystem::OEColorStop 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::OEColorStop self, double value, OEColor color) -> OEColorStop
        __init__(OESystem::OEColorStop self, OEColorStop rhs) -> OEColorStop
        """
        this = _oechem.new_OEColorStop(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEColorStop
    __del__ = lambda self: None

    def GetValue(self) -> "double":
        """GetValue(OEColorStop self) -> double"""
        return _oechem.OEColorStop_GetValue(self)


    def GetColor(self) -> "OESystem::OEColor const &":
        """GetColor(OEColorStop self) -> OEColor"""
        return _oechem.OEColorStop_GetColor(self)

OEColorStop_swigregister = _oechem.OEColorStop_swigregister
OEColorStop_swigregister(OEColorStop)

class OEColorGradientBase(object):
    """Proxy of C++ OESystem::OEColorGradientBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEColorGradientBase
    __del__ = lambda self: None

    def GetMinValue(self) -> "double":
        """GetMinValue(OEColorGradientBase self) -> double"""
        return _oechem.OEColorGradientBase_GetMinValue(self)


    def GetMaxValue(self) -> "double":
        """GetMaxValue(OEColorGradientBase self) -> double"""
        return _oechem.OEColorGradientBase_GetMaxValue(self)


    def GetMinColor(self) -> "OESystem::OEColor const &":
        """GetMinColor(OEColorGradientBase self) -> OEColor"""
        return _oechem.OEColorGradientBase_GetMinColor(self)


    def GetMaxColor(self) -> "OESystem::OEColor const &":
        """GetMaxColor(OEColorGradientBase self) -> OEColor"""
        return _oechem.OEColorGradientBase_GetMaxColor(self)


    def NumStops(self) -> "unsigned int":
        """NumStops(OEColorGradientBase self) -> unsigned int"""
        return _oechem.OEColorGradientBase_NumStops(self)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEColorGradientBase self) -> bool"""
        return _oechem.OEColorGradientBase_IsEmpty(self)


    def GetStops(self) -> "OESystem::OEIterBase< OESystem::OEColorStop > *":
        """GetStops(OEColorGradientBase self) -> OESystem::OEIterBase< OESystem::OEColorStop > *"""
        return _oechem.OEColorGradientBase_GetStops(self)


    def AddStop(self, stop: 'OEColorStop') -> "bool":
        """AddStop(OEColorGradientBase self, OEColorStop stop) -> bool"""
        return _oechem.OEColorGradientBase_AddStop(self, stop)


    def DeleteStop(self, stopidx: 'unsigned int') -> "bool":
        """DeleteStop(OEColorGradientBase self, unsigned int stopidx) -> bool"""
        return _oechem.OEColorGradientBase_DeleteStop(self, stopidx)


    def GetColorAt(self, value: 'double') -> "OESystem::OEColor":
        """GetColorAt(OEColorGradientBase self, double value) -> OEColor"""
        return _oechem.OEColorGradientBase_GetColorAt(self, value)


    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OEColorGradientBase self, double value) -> double"""
        return _oechem.OEColorGradientBase_TransformValue(self, value)

OEColorGradientBase_swigregister = _oechem.OEColorGradientBase_swigregister
OEColorGradientBase_swigregister(OEColorGradientBase)

class OELinearColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OELinearColorGradient 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::OELinearColorGradient self) -> OELinearColorGradient
        __init__(OESystem::OELinearColorGradient self, OEColorStop oneStop) -> OELinearColorGradient
        __init__(OESystem::OELinearColorGradient self, OEColorStop bgnStop, OEColorStop endStop) -> OELinearColorGradient
        __init__(OESystem::OELinearColorGradient self, OELinearColorGradient rhs) -> OELinearColorGradient
        """
        this = _oechem.new_OELinearColorGradient(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELinearColorGradient
    __del__ = lambda self: None

    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OELinearColorGradient self, double value) -> double"""
        return _oechem.OELinearColorGradient_TransformValue(self, value)

OELinearColorGradient_swigregister = _oechem.OELinearColorGradient_swigregister
OELinearColorGradient_swigregister(OELinearColorGradient)

class OEExponentialColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OEExponentialColorGradient 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::OEExponentialColorGradient self) -> OEExponentialColorGradient
        __init__(OESystem::OEExponentialColorGradient self, OEColorStop oneStop) -> OEExponentialColorGradient
        __init__(OESystem::OEExponentialColorGradient self, OEColorStop bgnStop, OEColorStop endStop) -> OEExponentialColorGradient
        __init__(OESystem::OEExponentialColorGradient self, OEExponentialColorGradient rhs) -> OEExponentialColorGradient
        """
        this = _oechem.new_OEExponentialColorGradient(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEExponentialColorGradient
    __del__ = lambda self: None

    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OEExponentialColorGradient self, double value) -> double"""
        return _oechem.OEExponentialColorGradient_TransformValue(self, value)

OEExponentialColorGradient_swigregister = _oechem.OEExponentialColorGradient_swigregister
OEExponentialColorGradient_swigregister(OEExponentialColorGradient)

class OELogarithmicColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OELogarithmicColorGradient 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::OELogarithmicColorGradient self) -> OELogarithmicColorGradient
        __init__(OESystem::OELogarithmicColorGradient self, OEColorStop oneStop) -> OELogarithmicColorGradient
        __init__(OESystem::OELogarithmicColorGradient self, OEColorStop bgnStop, OEColorStop endStop) -> OELogarithmicColorGradient
        __init__(OESystem::OELogarithmicColorGradient self, OELogarithmicColorGradient rhs) -> OELogarithmicColorGradient
        """
        this = _oechem.new_OELogarithmicColorGradient(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELogarithmicColorGradient
    __del__ = lambda self: None

    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OELogarithmicColorGradient self, double value) -> double"""
        return _oechem.OELogarithmicColorGradient_TransformValue(self, value)

OELogarithmicColorGradient_swigregister = _oechem.OELogarithmicColorGradient_swigregister
OELogarithmicColorGradient_swigregister(OELogarithmicColorGradient)

class OEExponentColorGradient(OEColorGradientBase):
    """Proxy of C++ OESystem::OEExponentColorGradient 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::OEExponentColorGradient self, double exponent) -> OEExponentColorGradient
        __init__(OESystem::OEExponentColorGradient self, double exponent, OEColorStop oneStop) -> OEExponentColorGradient
        __init__(OESystem::OEExponentColorGradient self, double exponent, OEColorStop bgnStop, OEColorStop endStop) -> OEExponentColorGradient
        __init__(OESystem::OEExponentColorGradient self, OEExponentColorGradient rhs) -> OEExponentColorGradient
        """
        this = _oechem.new_OEExponentColorGradient(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEExponentColorGradient
    __del__ = lambda self: None

    def SetExponent(self, exponent: 'double') -> "void":
        """SetExponent(OEExponentColorGradient self, double exponent)"""
        return _oechem.OEExponentColorGradient_SetExponent(self, exponent)


    def GetExponent(self) -> "double":
        """GetExponent(OEExponentColorGradient self) -> double"""
        return _oechem.OEExponentColorGradient_GetExponent(self)


    def TransformValue(self, value: 'double') -> "double":
        """TransformValue(OEExponentColorGradient self, double value) -> double"""
        return _oechem.OEExponentColorGradient_TransformValue(self, value)

OEExponentColorGradient_swigregister = _oechem.OEExponentColorGradient_swigregister
OEExponentColorGradient_swigregister(OEExponentColorGradient)

class OEColorStopIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEColorStop)> 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<(OESystem::OEColorStop)> self) -> OEColorStopIter
        __init__(OESystem::OEIter<(OESystem::OEColorStop)> self, OEColorStopIter rhs) -> OEColorStopIter
        __init__(OESystem::OEIter<(OESystem::OEColorStop)> self, OESystem::OEIterBase< OESystem::OEColorStop > * rhs) -> OEColorStopIter
        __init__(OESystem::OEIter<(OESystem::OEColorStop)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEColorStop >::NonConstA > * rhs) -> OEColorStopIter
        """
        this = _oechem.new_OEColorStopIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEColorStopIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEColorStop > *":
        """Copy(OEColorStopIter self) -> OESystem::OEIterBase< OESystem::OEColorStop > *"""
        return _oechem.OEColorStopIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEColorStopIter self, OESystem::OEIterBase< OESystem::OEColorStop > * ib)
        Push(OEColorStopIter self, OEColorStopIter iter)
        """
        return _oechem.OEColorStopIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEColorStop,OESystem::OEColorStop > const &') -> "void":
        """Sort(OEColorStopIter self, OESystem::OEBinaryPredicate< OESystem::OEColorStop,OESystem::OEColorStop > const & sort_criterion)"""
        return _oechem.OEColorStopIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """ToFirst(OEColorStopIter self) -> OEColorStopIter"""
        return _oechem.OEColorStopIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """ToLast(OEColorStopIter self) -> OEColorStopIter"""
        return _oechem.OEColorStopIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEColorStop &":
        """__ref__(OEColorStopIter self) -> OEColorStop"""
        return _oechem.OEColorStopIter___ref__(self)


    def IsValid(self):
      return _oechem.OEColorStopIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEColorStopIter self) -> PyObject *"""
        return _oechem.OEColorStopIter_next(self)


    def Target(self) -> "OESystem::OEColorStop &":
        """Target(OEColorStopIter self) -> OEColorStop"""
        return _oechem.OEColorStopIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """
        Next(OEColorStopIter self) -> OEColorStopIter
        Next(OEColorStopIter self, int i) -> OEColorStopIter
        """
        return _oechem.OEColorStopIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEColorStop > &":
        """
        Prev(OEColorStopIter self) -> OEColorStopIter
        Prev(OEColorStopIter self, int i) -> OEColorStopIter
        """
        return _oechem.OEColorStopIter_Prev(self, *args)

OEColorStopIter_swigregister = _oechem.OEColorStopIter_swigregister
OEColorStopIter_swigregister(OEColorStopIter)

class OEHeader(OEContainer):
    """Proxy of C++ OESystem::OEHeader 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::OEHeader self) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version, char const * comment, OEInterface const & itf, OEHeader history=0x0) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version, char const * comment, OEInterface const & itf) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version, char const * comment) -> OEHeader
        __init__(OESystem::OEHeader self, int argc, char *[] argv, char const * appname, char const * version) -> OEHeader
        __init__(OESystem::OEHeader self, OEHeader rhs) -> OEHeader
        """
        this = _oechem.new_OEHeader(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEHeader___nonzero__(self)



    def SetDate(self, *args) -> "void":
        """
        SetDate(OEHeader self)
        SetDate(OEHeader self, int day, int month, int year)
        SetDate(OEHeader self, int day, int month, int year, int hour, int minute, int seconds)
        """
        return _oechem.OEHeader_SetDate(self, *args)


    def GetDate(self, *args) -> "void":
        """
        GetDate(OEHeader self, int & day, int & month, int & year)
        GetDate(OEHeader self, int & day, int & month, int & year, int & hour, int & minute, int & seconds)
        """
        return _oechem.OEHeader_GetDate(self, *args)


    def SetProgram(self, program: 'std::string const &') -> "void":
        """SetProgram(OEHeader self, std::string const & program)"""
        return _oechem.OEHeader_SetProgram(self, program)


    def GetProgram(self) -> "std::string":
        """GetProgram(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetProgram(self)


    def SetCommandLine(self, comment: 'std::string const &') -> "void":
        """SetCommandLine(OEHeader self, std::string const & comment)"""
        return _oechem.OEHeader_SetCommandLine(self, comment)


    def GetCommandLine(self) -> "std::string":
        """GetCommandLine(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetCommandLine(self)


    def SetComment(self, comment: 'std::string const &') -> "void":
        """SetComment(OEHeader self, std::string const & comment)"""
        return _oechem.OEHeader_SetComment(self, comment)


    def GetComment(self) -> "std::string":
        """GetComment(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetComment(self)


    def SetInterface(self, itf: 'OEInterface const &') -> "void":
        """SetInterface(OEHeader self, OEInterface const & itf)"""
        return _oechem.OEHeader_SetInterface(self, itf)


    def GetInterface(self) -> "std::string":
        """GetInterface(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetInterface(self)


    def SetOEVersion(self, version: 'int') -> "void":
        """SetOEVersion(OEHeader self, int version)"""
        return _oechem.OEHeader_SetOEVersion(self, version)


    def GetOEVersion(self) -> "int":
        """GetOEVersion(OEHeader self) -> int"""
        return _oechem.OEHeader_GetOEVersion(self)


    def SetOERelease(self, release: 'std::string const &') -> "void":
        """SetOERelease(OEHeader self, std::string const & release)"""
        return _oechem.OEHeader_SetOERelease(self, release)


    def GetOERelease(self) -> "std::string":
        """GetOERelease(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetOERelease(self)


    def SetPlatform(self, platform: 'std::string const &') -> "void":
        """SetPlatform(OEHeader self, std::string const & platform)"""
        return _oechem.OEHeader_SetPlatform(self, platform)


    def GetPlatform(self) -> "std::string":
        """GetPlatform(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetPlatform(self)


    def SetVersion(self, arg2: 'std::string const &') -> "void":
        """SetVersion(OEHeader self, std::string const & arg2)"""
        return _oechem.OEHeader_SetVersion(self, arg2)


    def GetVersion(self) -> "std::string":
        """GetVersion(OEHeader self) -> std::string"""
        return _oechem.OEHeader_GetVersion(self)


    def AddHistory(self, header: 'OEHeader') -> "void":
        """AddHistory(OEHeader self, OEHeader header)"""
        return _oechem.OEHeader_AddHistory(self, header)


    def GetHistory(self) -> "OESystem::OEIterBase< OESystem::OEHeader > *":
        """GetHistory(OEHeader self) -> OESystem::OEIterBase< OESystem::OEHeader > *"""
        return _oechem.OEHeader_GetHistory(self)

    __swig_destroy__ = _oechem.delete_OEHeader
    __del__ = lambda self: None
OEHeader_swigregister = _oechem.OEHeader_swigregister
OEHeader_swigregister(OEHeader)

class OEHalfFloat(object):
    """Proxy of C++ OEPlatform::OEHalfFloat 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__(OEPlatform::OEHalfFloat self) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, oe_half data) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, int data) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, float arg2) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, double arg2) -> OEHalfFloat
        __init__(OEPlatform::OEHalfFloat self, long double arg2) -> OEHalfFloat
        """
        this = _oechem.new_OEHalfFloat(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __float__(self) -> "double":
        """__float__(OEHalfFloat self) -> double"""
        return _oechem.OEHalfFloat___float__(self)


    def GetValue(self) -> "float":
        """GetValue(OEHalfFloat self) -> float"""
        return _oechem.OEHalfFloat_GetValue(self)


    def GetData(self) -> "oe_half":
        """GetData(OEHalfFloat self) -> oe_half"""
        return _oechem.OEHalfFloat_GetData(self)


    def posInf() -> "OEPlatform::OEHalfFloat":
        """posInf() -> OEHalfFloat"""
        return _oechem.OEHalfFloat_posInf()

    posInf = staticmethod(posInf)

    def qNan() -> "OEPlatform::OEHalfFloat":
        """qNan() -> OEHalfFloat"""
        return _oechem.OEHalfFloat_qNan()

    qNan = staticmethod(qNan)

    def sNan() -> "OEPlatform::OEHalfFloat":
        """sNan() -> OEHalfFloat"""
        return _oechem.OEHalfFloat_sNan()

    sNan = staticmethod(sNan)

    def __lt__(self, rhs: 'OEHalfFloat') -> "bool":
        """__lt__(OEHalfFloat self, OEHalfFloat rhs) -> bool"""
        return _oechem.OEHalfFloat___lt__(self, rhs)


    def __eq__(self, rhs: 'OEHalfFloat') -> "bool":
        """__eq__(OEHalfFloat self, OEHalfFloat rhs) -> bool"""
        return _oechem.OEHalfFloat___eq__(self, rhs)


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OEHalfFloat self) -> PyObject *"""
        return _oechem.OEHalfFloat_GetDataTypeAsLong(self)

    __swig_destroy__ = _oechem.delete_OEHalfFloat
    __del__ = lambda self: None
OEHalfFloat_swigregister = _oechem.OEHalfFloat_swigregister
OEHalfFloat_swigregister(OEHalfFloat)

def OEHalfFloat_posInf() -> "OEPlatform::OEHalfFloat":
    """OEHalfFloat_posInf() -> OEHalfFloat"""
    return _oechem.OEHalfFloat_posInf()

def OEHalfFloat_qNan() -> "OEPlatform::OEHalfFloat":
    """OEHalfFloat_qNan() -> OEHalfFloat"""
    return _oechem.OEHalfFloat_qNan()

def OEHalfFloat_sNan() -> "OEPlatform::OEHalfFloat":
    """OEHalfFloat_sNan() -> OEHalfFloat"""
    return _oechem.OEHalfFloat_sNan()


_oechem.HALF_MIN_swigconstant(_oechem)
HALF_MIN = _oechem.HALF_MIN

_oechem.HALF_NRM_MIN_swigconstant(_oechem)
HALF_NRM_MIN = _oechem.HALF_NRM_MIN

_oechem.HALF_MAX_swigconstant(_oechem)
HALF_MAX = _oechem.HALF_MAX

_oechem.HALF_EPSILON_swigconstant(_oechem)
HALF_EPSILON = _oechem.HALF_EPSILON

_oechem.HALF_MANT_DIG_swigconstant(_oechem)
HALF_MANT_DIG = _oechem.HALF_MANT_DIG

_oechem.HALF_DIG_swigconstant(_oechem)
HALF_DIG = _oechem.HALF_DIG

_oechem.HALF_RADIX_swigconstant(_oechem)
HALF_RADIX = _oechem.HALF_RADIX

_oechem.HALF_MIN_EXP_swigconstant(_oechem)
HALF_MIN_EXP = _oechem.HALF_MIN_EXP

_oechem.HALF_MAX_EXP_swigconstant(_oechem)
HALF_MAX_EXP = _oechem.HALF_MAX_EXP

_oechem.HALF_MIN_10_EXP_swigconstant(_oechem)
HALF_MIN_10_EXP = _oechem.HALF_MIN_10_EXP

_oechem.HALF_MAX_10_EXP_swigconstant(_oechem)
HALF_MAX_10_EXP = _oechem.HALF_MAX_10_EXP
class OEGroupBase(OEBase):
    """Proxy of C++ OEChem::OEGroupBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEGroupBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEGroupBase self)"""
        return _oechem.OEGroupBase_Clear(self)


    def SetGroupType(self, arg2: 'unsigned int') -> "void":
        """SetGroupType(OEGroupBase self, unsigned int arg2)"""
        return _oechem.OEGroupBase_SetGroupType(self, arg2)


    def GetGroupType(self) -> "unsigned int":
        """GetGroupType(OEGroupBase self) -> unsigned int"""
        return _oechem.OEGroupBase_GetGroupType(self)


    def GetParent(self) -> "OEChem::OEMolBase const *":
        """GetParent(OEGroupBase self) -> OEMolBase"""
        return _oechem.OEGroupBase_GetParent(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEGroupBase self) -> unsigned int"""
        return _oechem.OEGroupBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEGroupBase self) -> unsigned int"""
        return _oechem.OEGroupBase_NumBonds(self)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEGroupBase self) -> bool"""
        return _oechem.OEGroupBase_IsEmpty(self)


    def HasAtom(self, atom: 'OEAtomBase') -> "bool":
        """HasAtom(OEGroupBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEGroupBase_HasAtom(self, atom)


    def HasBond(self, bond: 'OEBondBase') -> "bool":
        """HasBond(OEGroupBase self, OEBondBase bond) -> bool"""
        return _oechem.OEGroupBase_HasBond(self, bond)


    def AddAtom(self, atom: 'OEAtomBase') -> "bool":
        """AddAtom(OEGroupBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEGroupBase_AddAtom(self, atom)


    def AddBond(self, bond: 'OEBondBase') -> "bool":
        """AddBond(OEGroupBase self, OEBondBase bond) -> bool"""
        return _oechem.OEGroupBase_AddBond(self, bond)


    def DeleteAtom(self, atom: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEGroupBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEGroupBase_DeleteAtom(self, atom)


    def DeleteBond(self, bond: 'OEBondBase') -> "bool":
        """DeleteBond(OEGroupBase self, OEBondBase bond) -> bool"""
        return _oechem.OEGroupBase_DeleteBond(self, bond)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEGroupBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEGroupBase self, OEUnaryAtomPred atompred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEGroupBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEGroupBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEGroupBase self, OEUnaryBondPred bondpred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEGroupBase_GetBonds(self, *args)


    def GetGroupDefinition(self, abset: 'OEAtomBondSet') -> "bool":
        """GetGroupDefinition(OEGroupBase self, OEAtomBondSet abset) -> bool"""
        return _oechem.OEGroupBase_GetGroupDefinition(self, abset)


    def Sweep(self) -> "bool":
        """Sweep(OEGroupBase self) -> bool"""
        return _oechem.OEGroupBase_Sweep(self)


    def IsDeleted(self) -> "bool":
        """IsDeleted(OEGroupBase self) -> bool"""
        return _oechem.OEGroupBase_IsDeleted(self)


    def __str__(self) -> "std::string":
        """__str__(OEGroupBase self) -> std::string"""
        return _oechem.OEGroupBase___str__(self)

OEGroupBase_swigregister = _oechem.OEGroupBase_swigregister
OEGroupBase_swigregister(OEGroupBase)

class OEGroupBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEGroupBase)> 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::OEGroupBase)> self) -> OEGroupBaseIter
        __init__(OESystem::OEIter<(OEChem::OEGroupBase)> self, OEGroupBaseIter rhs) -> OEGroupBaseIter
        __init__(OESystem::OEIter<(OEChem::OEGroupBase)> self, OESystem::OEIterBase< OEChem::OEGroupBase > * rhs) -> OEGroupBaseIter
        __init__(OESystem::OEIter<(OEChem::OEGroupBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEGroupBase >::NonConstA > * rhs) -> OEGroupBaseIter
        """
        this = _oechem.new_OEGroupBaseIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEGroupBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """Copy(OEGroupBaseIter self) -> OESystem::OEIterBase< OEChem::OEGroupBase > *"""
        return _oechem.OEGroupBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEGroupBaseIter self, OESystem::OEIterBase< OEChem::OEGroupBase > * ib)
        Push(OEGroupBaseIter self, OEGroupBaseIter iter)
        """
        return _oechem.OEGroupBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryGroupPred') -> "void":
        """Sort(OEGroupBaseIter self, OEBinaryGroupPred sort_criterion)"""
        return _oechem.OEGroupBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """ToFirst(OEGroupBaseIter self) -> OEGroupBaseIter"""
        return _oechem.OEGroupBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """ToLast(OEGroupBaseIter self) -> OEGroupBaseIter"""
        return _oechem.OEGroupBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEGroupBase &":
        """__ref__(OEGroupBaseIter self) -> OEGroupBase"""
        return _oechem.OEGroupBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEGroupBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEGroupBaseIter self) -> PyObject *"""
        return _oechem.OEGroupBaseIter_next(self)


    def Target(self) -> "OEChem::OEGroupBase &":
        """Target(OEGroupBaseIter self) -> OEGroupBase"""
        return _oechem.OEGroupBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """
        Next(OEGroupBaseIter self) -> OEGroupBaseIter
        Next(OEGroupBaseIter self, int i) -> OEGroupBaseIter
        """
        return _oechem.OEGroupBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEGroupBase > &":
        """
        Prev(OEGroupBaseIter self) -> OEGroupBaseIter
        Prev(OEGroupBaseIter self, int i) -> OEGroupBaseIter
        """
        return _oechem.OEGroupBaseIter_Prev(self, *args)

OEGroupBaseIter_swigregister = _oechem.OEGroupBaseIter_swigregister
OEGroupBaseIter_swigregister(OEGroupBaseIter)


def OEAddMols(*args) -> "PyObject *":
    """
    OEAddMols(OEMolBase lhs, OEMolBase rhs, char const * delim) -> PyObject
    OEAddMols(OEMolBase lhs, OEMolBase rhs) -> PyObject *
    """
    return _oechem.OEAddMols(*args)

def OEDetermineRingSystems(mol: 'OEMolBase') -> "PyObject *":
    """OEDetermineRingSystems(OEMolBase mol) -> PyObject *"""
    return _oechem.OEDetermineRingSystems(mol)

def OEDetermineAromaticRingSystems(mol: 'OEMolBase') -> "PyObject *":
    """OEDetermineAromaticRingSystems(OEMolBase mol) -> PyObject *"""
    return _oechem.OEDetermineAromaticRingSystems(mol)

def OEDetermineComponents(mol: 'OEMolBase') -> "PyObject *":
    """OEDetermineComponents(OEMolBase mol) -> PyObject *"""
    return _oechem.OEDetermineComponents(mol)

def GetDoubleFromPyObject(outdouble: 'double &', numberobj: 'PyObject *') -> "bool":
    """GetDoubleFromPyObject(double & outdouble, PyObject * numberobj) -> bool"""
    return _oechem.GetDoubleFromPyObject(outdouble, numberobj)
class OEAtomBase(OEBase):
    """Proxy of C++ OEChem::OEAtomBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEAtomBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEAtomBase self)"""
        return _oechem.OEAtomBase_Clear(self)


    def IsDeleted(self) -> "bool":
        """IsDeleted(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsDeleted(self)


    def SetHyb(self, arg2: 'unsigned int') -> "bool":
        """SetHyb(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetHyb(self, arg2)


    def SetAtomicNum(self, arg2: 'unsigned int') -> "bool":
        """SetAtomicNum(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetAtomicNum(self, arg2)


    def SetIsotope(self, arg2: 'unsigned int') -> "bool":
        """SetIsotope(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetIsotope(self, arg2)


    def SetFormalCharge(self, arg2: 'int') -> "bool":
        """SetFormalCharge(OEAtomBase self, int arg2) -> bool"""
        return _oechem.OEAtomBase_SetFormalCharge(self, arg2)


    def SetPartialCharge(self, arg2: 'double') -> "bool":
        """SetPartialCharge(OEAtomBase self, double arg2) -> bool"""
        return _oechem.OEAtomBase_SetPartialCharge(self, arg2)


    def SetIntType(self, arg2: 'int') -> "bool":
        """SetIntType(OEAtomBase self, int arg2) -> bool"""
        return _oechem.OEAtomBase_SetIntType(self, arg2)


    def SetType(self, arg2: 'char const *') -> "bool":
        """SetType(OEAtomBase self, char const * arg2) -> bool"""
        return _oechem.OEAtomBase_SetType(self, arg2)


    def SetName(self, arg2: 'char const *') -> "bool":
        """SetName(OEAtomBase self, char const * arg2) -> bool"""
        return _oechem.OEAtomBase_SetName(self, arg2)


    def SetImplicitHCount(self, arg2: 'unsigned int') -> "bool":
        """SetImplicitHCount(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetImplicitHCount(self, arg2)


    def SetMapIdx(self, arg2: 'unsigned int') -> "bool":
        """SetMapIdx(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetMapIdx(self, arg2)


    def SetSymmetryClass(self, arg2: 'unsigned int') -> "bool":
        """SetSymmetryClass(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetSymmetryClass(self, arg2)


    def SetAromatic(self, arg2: 'bool') -> "bool":
        """SetAromatic(OEAtomBase self, bool arg2) -> bool"""
        return _oechem.OEAtomBase_SetAromatic(self, arg2)


    def SetInRing(self, arg2: 'bool') -> "bool":
        """SetInRing(OEAtomBase self, bool arg2) -> bool"""
        return _oechem.OEAtomBase_SetInRing(self, arg2)


    def SetChiral(self, arg2: 'bool') -> "bool":
        """SetChiral(OEAtomBase self, bool arg2) -> bool"""
        return _oechem.OEAtomBase_SetChiral(self, arg2)


    def SetAxial(self, arg2: 'OEBondBase', arg3: 'bool') -> "bool":
        """SetAxial(OEAtomBase self, OEBondBase arg2, bool arg3) -> bool"""
        return _oechem.OEAtomBase_SetAxial(self, arg2, arg3)


    def SetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int', arg4: 'unsigned int') -> "bool":
        """SetStereo(OEAtomBase self, OEAtomVector arg2, unsigned int arg3, unsigned int arg4) -> bool"""
        return _oechem.OEAtomBase_SetStereo(self, arg2, arg3, arg4)


    def SetRxnRole(self, arg2: 'unsigned int') -> "bool":
        """SetRxnRole(OEAtomBase self, unsigned int arg2) -> bool"""
        return _oechem.OEAtomBase_SetRxnRole(self, arg2)


    def SetRadius(self, arg2: 'double') -> "bool":
        """SetRadius(OEAtomBase self, double arg2) -> bool"""
        return _oechem.OEAtomBase_SetRadius(self, arg2)


    def GetAxial(self, arg2: 'OEBondBase') -> "bool":
        """GetAxial(OEAtomBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEAtomBase_GetAxial(self, arg2)


    def GetFormalCharge(self) -> "int":
        """GetFormalCharge(OEAtomBase self) -> int"""
        return _oechem.OEAtomBase_GetFormalCharge(self)


    def GetPartialCharge(self) -> "double":
        """GetPartialCharge(OEAtomBase self) -> double"""
        return _oechem.OEAtomBase_GetPartialCharge(self)


    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetIdx(self)


    def GetMapIdx(self) -> "unsigned int":
        """GetMapIdx(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetMapIdx(self)


    def GetAtomicNum(self) -> "unsigned int":
        """GetAtomicNum(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetAtomicNum(self)


    def GetIsotope(self) -> "unsigned int":
        """GetIsotope(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetIsotope(self)


    def GetHyb(self) -> "unsigned int":
        """GetHyb(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetHyb(self)


    def GetImplicitHCount(self) -> "unsigned int":
        """GetImplicitHCount(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetImplicitHCount(self)


    def GetSymmetryClass(self) -> "unsigned int":
        """GetSymmetryClass(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetSymmetryClass(self)


    def GetIntType(self) -> "int":
        """GetIntType(OEAtomBase self) -> int"""
        return _oechem.OEAtomBase_GetIntType(self)


    def GetRxnRole(self) -> "unsigned int":
        """GetRxnRole(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetRxnRole(self)


    def GetType(self) -> "char const *":
        """GetType(OEAtomBase self) -> char const *"""
        return _oechem.OEAtomBase_GetType(self)


    def GetParent(self) -> "OEChem::OEMolBase *":
        """GetParent(OEAtomBase self) -> OEMolBase"""
        return _oechem.OEAtomBase_GetParent(self)


    def GetName(self) -> "char const *":
        """GetName(OEAtomBase self) -> char const *"""
        return _oechem.OEAtomBase_GetName(self)


    def GetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int') -> "unsigned int":
        """GetStereo(OEAtomBase self, OEAtomVector arg2, unsigned int arg3) -> unsigned int"""
        return _oechem.OEAtomBase_GetStereo(self, arg2, arg3)


    def GetValence(self) -> "unsigned int":
        """GetValence(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetValence(self)


    def GetHvyValence(self) -> "unsigned int":
        """GetHvyValence(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetHvyValence(self)


    def GetDegree(self) -> "unsigned int":
        """GetDegree(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetDegree(self)


    def GetHvyDegree(self) -> "unsigned int":
        """GetHvyDegree(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetHvyDegree(self)


    def GetExplicitValence(self) -> "unsigned int":
        """GetExplicitValence(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetExplicitValence(self)


    def GetExplicitDegree(self) -> "unsigned int":
        """GetExplicitDegree(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetExplicitDegree(self)


    def GetExplicitHCount(self) -> "unsigned int":
        """GetExplicitHCount(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetExplicitHCount(self)


    def GetTotalHCount(self) -> "unsigned int":
        """GetTotalHCount(OEAtomBase self) -> unsigned int"""
        return _oechem.OEAtomBase_GetTotalHCount(self)


    def GetBond(self, arg2: 'OEAtomBase') -> "OEChem::OEBondBase *":
        """GetBond(OEAtomBase self, OEAtomBase arg2) -> OEBondBase"""
        return _oechem.OEAtomBase_GetBond(self, arg2)


    def GetRadius(self) -> "double":
        """GetRadius(OEAtomBase self) -> double"""
        return _oechem.OEAtomBase_GetRadius(self)


    def IsHydrogen(self) -> "bool":
        """IsHydrogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsHydrogen(self)


    def IsPolar(self) -> "bool":
        """IsPolar(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsPolar(self)


    def IsPolarHydrogen(self) -> "bool":
        """IsPolarHydrogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsPolarHydrogen(self)


    def IsCarbon(self) -> "bool":
        """IsCarbon(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsCarbon(self)


    def IsNitrogen(self) -> "bool":
        """IsNitrogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsNitrogen(self)


    def IsOxygen(self) -> "bool":
        """IsOxygen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsOxygen(self)


    def IsHalogen(self) -> "bool":
        """IsHalogen(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsHalogen(self)


    def IsMetal(self) -> "bool":
        """IsMetal(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsMetal(self)


    def IsSulfur(self) -> "bool":
        """IsSulfur(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsSulfur(self)


    def IsPhosphorus(self) -> "bool":
        """IsPhosphorus(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsPhosphorus(self)


    def IsAromatic(self) -> "bool":
        """IsAromatic(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsAromatic(self)


    def IsInRing(self) -> "bool":
        """IsInRing(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsInRing(self)


    def IsConnected(self, arg2: 'OEAtomBase') -> "bool":
        """IsConnected(OEAtomBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEAtomBase_IsConnected(self, arg2)


    def IsChiral(self) -> "bool":
        """IsChiral(OEAtomBase self) -> bool"""
        return _oechem.OEAtomBase_IsChiral(self)


    def HasStereoSpecified(self, *args) -> "bool":
        """
        HasStereoSpecified(OEAtomBase self, unsigned int v) -> bool
        HasStereoSpecified(OEAtomBase self) -> bool
        """
        return _oechem.OEAtomBase_HasStereoSpecified(self, *args)


    def HasAlphaBetaUnsat(self, includePandS: 'bool'=True) -> "bool":
        """
        HasAlphaBetaUnsat(OEAtomBase self, bool includePandS=True) -> bool
        HasAlphaBetaUnsat(OEAtomBase self) -> bool
        """
        return _oechem.OEAtomBase_HasAlphaBetaUnsat(self, includePandS)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEAtomBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEAtomBase_OrderBonds(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEAtomBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEAtomBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAtomBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEAtomBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEAtomBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEAtomBase_GetBonds(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEAtomBase self, void const * arg2) -> bool"""
        return _oechem.OEAtomBase_IsDataType(self, arg2)


    def __str__(self) -> "std::string":
        """__str__(OEAtomBase self) -> std::string"""
        return _oechem.OEAtomBase___str__(self)

OEAtomBase_swigregister = _oechem.OEAtomBase_swigregister
OEAtomBase_swigregister(OEAtomBase)

class OEBondBase(OEBase):
    """Proxy of C++ OEChem::OEBondBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEBondBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEBondBase self)"""
        return _oechem.OEBondBase_Clear(self)


    def Sweep(self) -> "bool":
        """Sweep(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_Sweep(self)


    def SetInRing(self, arg2: 'bool') -> "bool":
        """SetInRing(OEBondBase self, bool arg2) -> bool"""
        return _oechem.OEBondBase_SetInRing(self, arg2)


    def SetAromatic(self, arg2: 'bool') -> "bool":
        """SetAromatic(OEBondBase self, bool arg2) -> bool"""
        return _oechem.OEBondBase_SetAromatic(self, arg2)


    def SetChiral(self, arg2: 'bool') -> "bool":
        """SetChiral(OEBondBase self, bool arg2) -> bool"""
        return _oechem.OEBondBase_SetChiral(self, arg2)


    def SetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int', arg4: 'unsigned int') -> "bool":
        """SetStereo(OEBondBase self, OEAtomVector arg2, unsigned int arg3, unsigned int arg4) -> bool"""
        return _oechem.OEBondBase_SetStereo(self, arg2, arg3, arg4)


    def SetBgn(self, arg2: 'OEAtomBase') -> "bool":
        """SetBgn(OEBondBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEBondBase_SetBgn(self, arg2)


    def SetEnd(self, arg2: 'OEAtomBase') -> "bool":
        """SetEnd(OEBondBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEBondBase_SetEnd(self, arg2)


    def SetOrder(self, arg2: 'unsigned int') -> "bool":
        """SetOrder(OEBondBase self, unsigned int arg2) -> bool"""
        return _oechem.OEBondBase_SetOrder(self, arg2)


    def SetIntType(self, arg2: 'int') -> "bool":
        """SetIntType(OEBondBase self, int arg2) -> bool"""
        return _oechem.OEBondBase_SetIntType(self, arg2)


    def SetType(self, arg2: 'char const *') -> "bool":
        """SetType(OEBondBase self, char const * arg2) -> bool"""
        return _oechem.OEBondBase_SetType(self, arg2)


    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetIdx(self)


    def GetBgn(self) -> "OEChem::OEAtomBase *":
        """GetBgn(OEBondBase self) -> OEAtomBase"""
        return _oechem.OEBondBase_GetBgn(self)


    def GetEnd(self) -> "OEChem::OEAtomBase *":
        """GetEnd(OEBondBase self) -> OEAtomBase"""
        return _oechem.OEBondBase_GetEnd(self)


    def GetBgnIdx(self) -> "unsigned int":
        """GetBgnIdx(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetBgnIdx(self)


    def GetEndIdx(self) -> "unsigned int":
        """GetEndIdx(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetEndIdx(self)


    def GetOrder(self) -> "unsigned int":
        """GetOrder(OEBondBase self) -> unsigned int"""
        return _oechem.OEBondBase_GetOrder(self)


    def GetIntType(self) -> "int":
        """GetIntType(OEBondBase self) -> int"""
        return _oechem.OEBondBase_GetIntType(self)


    def GetType(self) -> "char const *":
        """GetType(OEBondBase self) -> char const *"""
        return _oechem.OEBondBase_GetType(self)


    def GetParent(self) -> "OEChem::OEMolBase *":
        """GetParent(OEBondBase self) -> OEMolBase"""
        return _oechem.OEBondBase_GetParent(self)


    def GetNbr(self, arg2: 'OEAtomBase') -> "OEChem::OEAtomBase *":
        """GetNbr(OEBondBase self, OEAtomBase arg2) -> OEAtomBase"""
        return _oechem.OEBondBase_GetNbr(self, arg2)


    def GetStereo(self, arg2: 'OEAtomVector', arg3: 'unsigned int') -> "unsigned int":
        """GetStereo(OEBondBase self, OEAtomVector arg2, unsigned int arg3) -> unsigned int"""
        return _oechem.OEBondBase_GetStereo(self, arg2, arg3)


    def IsDeleted(self) -> "bool":
        """IsDeleted(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsDeleted(self)


    def IsInRing(self) -> "bool":
        """IsInRing(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsInRing(self)


    def IsAromatic(self) -> "bool":
        """IsAromatic(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsAromatic(self)


    def IsRotor(self) -> "bool":
        """IsRotor(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsRotor(self)


    def IsChiral(self) -> "bool":
        """IsChiral(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_IsChiral(self)


    def HasStereoSpecified(self, *args) -> "bool":
        """
        HasStereoSpecified(OEBondBase self, unsigned int v) -> bool
        HasStereoSpecified(OEBondBase self) -> bool
        """
        return _oechem.OEBondBase_HasStereoSpecified(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEBondBase self, void const * arg2) -> bool"""
        return _oechem.OEBondBase_IsDataType(self, arg2)


    def SwapEnds(self) -> "bool":
        """SwapEnds(OEBondBase self) -> bool"""
        return _oechem.OEBondBase_SwapEnds(self)


    def __str__(self) -> "std::string":
        """__str__(OEBondBase self) -> std::string"""
        return _oechem.OEBondBase___str__(self)

OEBondBase_swigregister = _oechem.OEBondBase_swigregister
OEBondBase_swigregister(OEBondBase)

class OEMolBase(OEBase):
    """Proxy of C++ OEChem::OEMolBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEMolBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEMolBase self)"""
        return _oechem.OEMolBase_Clear(self)


    def ClearBase(self) -> "void":
        """ClearBase(OEMolBase self)"""
        return _oechem.OEMolBase_ClearBase(self)


    def Compress(self) -> "bool":
        """Compress(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_NumBonds(self)


    def Count(self, arg2: 'unsigned int') -> "unsigned int":
        """Count(OEMolBase self, unsigned int arg2) -> unsigned int"""
        return _oechem.OEMolBase_Count(self, arg2)


    def IsValid(self):
      return _oechem.OEMolBase___nonzero__(self)



    def SetEnergy(self, arg2: 'double') -> "bool":
        """SetEnergy(OEMolBase self, double arg2) -> bool"""
        return _oechem.OEMolBase_SetEnergy(self, arg2)


    def SetTitle(self, arg2: 'char const *') -> "bool":
        """SetTitle(OEMolBase self, char const * arg2) -> bool"""
        return _oechem.OEMolBase_SetTitle(self, arg2)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEMolBase self)"""
        return _oechem.OEMolBase_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEMolBase self) -> double"""
        return _oechem.OEMolBase_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEMolBase self) -> char const *"""
        return _oechem.OEMolBase_GetTitle(self)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEMolBase self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEMolBase_GetAtom(self, arg2)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEMolBase self, OEUnaryBondPred arg2) -> OEBondBase
        GetBond(OEMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMolBase_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEMolBase self, unsigned int arg2) -> OEAtomBase
        NewAtom(OEMolBase self, OEAtomBase arg2) -> OEAtomBase
        """
        return _oechem.OEMolBase_NewAtom(self, *args)


    def NewBond(self, arg2: 'OEAtomBase', arg3: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEMolBase self, OEAtomBase arg2, OEAtomBase arg3, unsigned int order=0) -> OEBondBase
        NewBond(OEMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMolBase_NewBond(self, arg2, arg3, order)


    def DeleteAtom(self, arg2: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEMolBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEMolBase_DeleteAtom(self, arg2)


    def DeleteBond(self, arg2: 'OEBondBase') -> "bool":
        """DeleteBond(OEMolBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEMolBase_DeleteBond(self, arg2)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEMolBase self, OEAtomBase arg2) -> bool
        IsDeleted(OEMolBase self, OEBondBase arg2) -> bool
        """
        return _oechem.OEMolBase_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_Sweep(self)


    def OrderAtoms(self, arg2: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEMolBase self, OEAtomVector arg2) -> bool"""
        return _oechem.OEMolBase_OrderAtoms(self, arg2)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEMolBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEMolBase_OrderBonds(self, arg2)


    def SetRxn(self, arg2: 'bool') -> "bool":
        """SetRxn(OEMolBase self, bool arg2) -> bool"""
        return _oechem.OEMolBase_SetRxn(self, arg2)


    def IsRxn(self) -> "bool":
        """IsRxn(OEMolBase self) -> bool"""
        return _oechem.OEMolBase_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEMolBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEMolBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEMolBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEMolBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEMolBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEMolBase_GetBonds(self, *args)


    def SetDimension(self, arg2: 'unsigned int') -> "bool":
        """SetDimension(OEMolBase self, unsigned int arg2) -> bool"""
        return _oechem.OEMolBase_SetDimension(self, arg2)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_GetDimension(self)


    def HasPerceived(self, arg2: 'unsigned int') -> "bool":
        """HasPerceived(OEMolBase self, unsigned int arg2) -> bool"""
        return _oechem.OEMolBase_HasPerceived(self, arg2)


    def SetPerceived(self, arg2: 'unsigned int', arg3: 'bool') -> "bool":
        """SetPerceived(OEMolBase self, unsigned int arg2, bool arg3) -> bool"""
        return _oechem.OEMolBase_SetPerceived(self, arg2, arg3)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEMolBase self)"""
        return _oechem.OEMolBase_ResetPerceived(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEMolBase self, void const * arg2) -> bool"""
        return _oechem.OEMolBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMolBase self) -> OEBase"""
        return _oechem.OEMolBase_CreateCopy(self)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEMolBase self) -> unsigned int"""
        return _oechem.OEMolBase_NumGroups(self)


    def NewGroup(self, *args) -> "OEChem::OEGroupBase *":
        """
        NewGroup(OEMolBase self, unsigned int type, OEAtomVector atoms) -> OEGroupBase
        NewGroup(OEMolBase self, unsigned int type, OEBondVector bonds) -> OEGroupBase
        NewGroup(OEMolBase self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase
        """
        return _oechem.OEMolBase_NewGroup(self, *args)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEMolBase self, OEGroupBase group) -> bool"""
        return _oechem.OEMolBase_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEMolBase self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEMolBase_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEMolBase self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEMolBase self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEMolBase_GetGroups(self, *args)


    def ForEachAtom(self, fcn: 'OESystem::OEUnaryFunction< OEChem::OEAtomBase,PyObject *,true,true > &') -> "PyObject *":
        """ForEachAtom(OEMolBase self, OESystem::OEUnaryFunction< OEChem::OEAtomBase,PyObject *,true,true > & fcn) -> PyObject *"""
        return _oechem.OEMolBase_ForEachAtom(self, fcn)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEMolBase self, OEAtomBase atom, OEHalfFloat crds) -> bool
        GetCoords(OEMolBase self, OEAtomBase arg2, float * arg3) -> bool
        GetCoords(OEMolBase self, OEAtomBase arg2, double * arg3) -> bool
        GetCoords(OEMolBase self, OEAtomBase arg2, long double * arg3) -> bool
        GetCoords(OEMolBase self, OEHalfFloat crds) -> bool
        GetCoords(OEMolBase self, float * arg2) -> bool
        GetCoords(OEMolBase self, double * arg2) -> bool
        GetCoords(OEMolBase self, long double * arg2) -> bool
        GetCoords(OEMolBase self, OEAtomBase atom) -> PyObject
        GetCoords(OEMolBase self) -> PyObject *
        """
        return _oechem.OEMolBase_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEMolBase self, OEAtomBase atom, OEHalfFloat crds) -> bool
        SetCoords(OEMolBase self, OEAtomBase arg2, float const * arg3) -> bool
        SetCoords(OEMolBase self, OEAtomBase arg2, double const * arg3) -> bool
        SetCoords(OEMolBase self, OEAtomBase arg2, long double const * arg3) -> bool
        SetCoords(OEMolBase self, OEHalfFloat crds) -> bool
        SetCoords(OEMolBase self, float const * arg2) -> bool
        SetCoords(OEMolBase self, double const * arg2) -> bool
        SetCoords(OEMolBase self, long double const * arg2) -> bool
        SetCoords(OEMolBase self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEMolBase self, PyObject * input) -> PyObject *
        """
        return _oechem.OEMolBase_SetCoords(self, *args)

OEMolBase_swigregister = _oechem.OEMolBase_swigregister
OEMolBase_swigregister(OEMolBase)

class OEQBase(object):
    """Proxy of C++ OEChem::OEQBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEQBase
    __del__ = lambda self: None

    def SetExpr(self, arg2: 'OEExprBase') -> "bool":
        """SetExpr(OEQBase self, OEExprBase arg2) -> bool"""
        return _oechem.OEQBase_SetExpr(self, arg2)


    def GetExpr(self, *args) -> "OEChem::OEExprBase *":
        """
        GetExpr(OEQBase self) -> OEExprBase
        GetExpr(OEQBase self) -> OEExprBase
        """
        return _oechem.OEQBase_GetExpr(self, *args)

OEQBase_swigregister = _oechem.OEQBase_swigregister
OEQBase_swigregister(OEQBase)

class OEQAtomBase(OEAtomBase, OEQBase):
    """Proxy of C++ OEChem::OEQAtomBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEQAtomBase
    __del__ = lambda self: None

    def GetParentAtom(self) -> "OEChem::OEAtomBase *":
        """GetParentAtom(OEQAtomBase self) -> OEAtomBase"""
        return _oechem.OEQAtomBase_GetParentAtom(self)


    def GetQAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """
        GetQAtoms(OEQAtomBase self) -> OESystem::OEIterBase< OEChem::OEQAtomBase >
        GetQAtoms(OEQAtomBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *
        """
        return _oechem.OEQAtomBase_GetQAtoms(self, *args)


    def GetQBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """
        GetQBonds(OEQAtomBase self) -> OESystem::OEIterBase< OEChem::OEQBondBase >
        GetQBonds(OEQAtomBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEQBondBase > *
        """
        return _oechem.OEQAtomBase_GetQBonds(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEQAtomBase self, void const * arg2) -> bool"""
        return _oechem.OEQAtomBase_IsDataType(self, arg2)

OEQAtomBase_swigregister = _oechem.OEQAtomBase_swigregister
OEQAtomBase_swigregister(OEQAtomBase)

class OEQBondBase(OEBondBase, OEQBase):
    """Proxy of C++ OEChem::OEQBondBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEQBondBase
    __del__ = lambda self: None

    def GetParentBond(self) -> "OEChem::OEBondBase *":
        """GetParentBond(OEQBondBase self) -> OEBondBase"""
        return _oechem.OEQBondBase_GetParentBond(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEQBondBase self, void const * arg2) -> bool"""
        return _oechem.OEQBondBase_IsDataType(self, arg2)

OEQBondBase_swigregister = _oechem.OEQBondBase_swigregister
OEQBondBase_swigregister(OEQBondBase)

class OEQMolBase(OEMolBase):
    """Proxy of C++ OEChem::OEQMolBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEQMolBase
    __del__ = lambda self: None

    def BuildExpressions(self, *args) -> "bool":
        """
        BuildExpressions(OEQMolBase self, unsigned int atomopts, unsigned int bondopts) -> bool
        BuildExpressions(OEQMolBase self, OEChem::OEMatchPair< OEChem::OEExprBase > const & arg2) -> bool
        """
        return _oechem.OEQMolBase_BuildExpressions(self, *args)


    def GetQAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """
        GetQAtoms(OEQMolBase self) -> OESystem::OEIterBase< OEChem::OEQAtomBase >
        GetQAtoms(OEQMolBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *
        """
        return _oechem.OEQMolBase_GetQAtoms(self, *args)


    def GetQBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """
        GetQBonds(OEQMolBase self) -> OESystem::OEIterBase< OEChem::OEQBondBase >
        GetQBonds(OEQMolBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEQBondBase > *
        """
        return _oechem.OEQMolBase_GetQBonds(self, *args)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEQMolBase self, void const * arg2) -> bool"""
        return _oechem.OEQMolBase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEQMolBase self) -> OEBase"""
        return _oechem.OEQMolBase_CreateCopy(self)

OEQMolBase_swigregister = _oechem.OEQMolBase_swigregister
OEQMolBase_swigregister(OEQMolBase)


def OEString2OEAtomExpr(expression: 'char const *') -> "unsigned int":
    """OEString2OEAtomExpr(char const * expression) -> unsigned int"""
    return _oechem.OEString2OEAtomExpr(expression)

def OEString2OEBondExpr(expression: 'char const *') -> "unsigned int":
    """OEString2OEBondExpr(char const * expression) -> unsigned int"""
    return _oechem.OEString2OEBondExpr(expression)
class OEConfBase(OEMolBase):
    """Proxy of C++ OEChem::OEConfBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEConfBase
    __del__ = lambda self: None

    def AddAtom(self, *args) -> "void":
        """
        AddAtom(OEConfBase self, OEAtomBase atom)
        AddAtom(OEConfBase self, OEAtomBase rhs, OEAtomBase atom)
        """
        return _oechem.OEConfBase_AddAtom(self, *args)


    def AddBond(self, bond: 'OEBondBase') -> "void":
        """AddBond(OEConfBase self, OEBondBase bond)"""
        return _oechem.OEConfBase_AddBond(self, bond)


    def SetMCMol(self, arg2: 'OEMCMolBase') -> "void":
        """SetMCMol(OEConfBase self, OEMCMolBase arg2)"""
        return _oechem.OEConfBase_SetMCMol(self, arg2)


    def GetMCMol(self, *args) -> "OEChem::OEMCMolBase &":
        """
        GetMCMol(OEConfBase self) -> OEMCMolBase
        GetMCMol(OEConfBase self) -> OEMCMolBase
        """
        return _oechem.OEConfBase_GetMCMol(self, *args)


    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetIdx(self)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEConfBase self)"""
        return _oechem.OEConfBase_ClearCoords(self)


    def Delete(self) -> "void":
        """Delete(OEConfBase self)"""
        return _oechem.OEConfBase_Delete(self)


    def GetTorsion(self, *args) -> "double":
        """
        GetTorsion(OEConfBase self, OETorsion arg2) -> double
        GetTorsion(OEConfBase self, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
        """
        return _oechem.OEConfBase_GetTorsion(self, *args)


    def SetTorsion(self, *args) -> "void":
        """
        SetTorsion(OEConfBase self, OETorsion arg2)
        SetTorsion(OEConfBase self, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d, double radians)
        """
        return _oechem.OEConfBase_SetTorsion(self, *args)


    def GetTransform(self) -> "OEChem::OETrans const &":
        """GetTransform(OEConfBase self) -> OETrans"""
        return _oechem.OEConfBase_GetTransform(self)


    def Transform(self, *args) -> "void":
        """
        Transform(OEConfBase self, OETrans arg2)
        Transform(OEConfBase self, OETransBase arg2)
        """
        return _oechem.OEConfBase_Transform(self, *args)


    def HasTitle(self) -> "bool":
        """HasTitle(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_HasTitle(self)


    def Clear(self) -> "void":
        """Clear(OEConfBase self)"""
        return _oechem.OEConfBase_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_NumBonds(self)


    def Count(self, arg2: 'unsigned int') -> "unsigned int":
        """Count(OEConfBase self, unsigned int arg2) -> unsigned int"""
        return _oechem.OEConfBase_Count(self, arg2)


    def IsValid(self):
      return _oechem.OEConfBase___nonzero__(self)



    def SetEnergy(self, arg2: 'double') -> "bool":
        """SetEnergy(OEConfBase self, double arg2) -> bool"""
        return _oechem.OEConfBase_SetEnergy(self, arg2)


    def SetTitle(self, arg2: 'char const *') -> "bool":
        """SetTitle(OEConfBase self, char const * arg2) -> bool"""
        return _oechem.OEConfBase_SetTitle(self, arg2)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEConfBase self) -> double"""
        return _oechem.OEConfBase_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEConfBase self) -> char const *"""
        return _oechem.OEConfBase_GetTitle(self)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEConfBase self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEConfBase_GetAtom(self, arg2)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEConfBase self, OEUnaryBondPred arg2) -> OEBondBase
        GetBond(OEConfBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEConfBase_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEConfBase self, unsigned int arg2) -> OEAtomBase
        NewAtom(OEConfBase self, OEAtomBase arg2) -> OEAtomBase
        """
        return _oechem.OEConfBase_NewAtom(self, *args)


    def NewBond(self, arg2: 'OEAtomBase', arg3: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEConfBase self, OEAtomBase arg2, OEAtomBase arg3, unsigned int order=0) -> OEBondBase
        NewBond(OEConfBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEConfBase_NewBond(self, arg2, arg3, order)


    def DeleteAtom(self, arg2: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEConfBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEConfBase_DeleteAtom(self, arg2)


    def DeleteBond(self, arg2: 'OEBondBase') -> "bool":
        """DeleteBond(OEConfBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEConfBase_DeleteBond(self, arg2)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEConfBase self) -> bool
        IsDeleted(OEConfBase self, OEAtomBase arg2) -> bool
        IsDeleted(OEConfBase self, OEBondBase arg2) -> bool
        """
        return _oechem.OEConfBase_IsDeleted(self, *args)


    def Sweep(self, *args) -> "bool":
        """
        Sweep(OEConfBase self) -> bool
        Sweep(OEConfBase self, unsigned int const * arg2) -> bool
        """
        return _oechem.OEConfBase_Sweep(self, *args)


    def OrderAtoms(self, arg2: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEConfBase self, OEAtomVector arg2) -> bool"""
        return _oechem.OEConfBase_OrderAtoms(self, arg2)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEConfBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEConfBase_OrderBonds(self, arg2)


    def SetRxn(self, arg2: 'bool') -> "bool":
        """SetRxn(OEConfBase self, bool arg2) -> bool"""
        return _oechem.OEConfBase_SetRxn(self, arg2)


    def IsRxn(self) -> "bool":
        """IsRxn(OEConfBase self) -> bool"""
        return _oechem.OEConfBase_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEConfBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEConfBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEConfBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEConfBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEConfBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEConfBase_GetBonds(self, *args)


    def SetDimension(self, arg2: 'unsigned int') -> "bool":
        """SetDimension(OEConfBase self, unsigned int arg2) -> bool"""
        return _oechem.OEConfBase_SetDimension(self, arg2)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_GetDimension(self)


    def HasPerceived(self, arg2: 'unsigned int') -> "bool":
        """HasPerceived(OEConfBase self, unsigned int arg2) -> bool"""
        return _oechem.OEConfBase_HasPerceived(self, arg2)


    def SetPerceived(self, arg2: 'unsigned int', arg3: 'bool') -> "bool":
        """SetPerceived(OEConfBase self, unsigned int arg2, bool arg3) -> bool"""
        return _oechem.OEConfBase_SetPerceived(self, arg2, arg3)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEConfBase self)"""
        return _oechem.OEConfBase_ResetPerceived(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEConfBase self) -> void const *"""
        return _oechem.OEConfBase_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEConfBase self, void const * type) -> bool"""
        return _oechem.OEConfBase_IsDataType(self, type)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEConfBase self) -> OEBase"""
        return _oechem.OEConfBase_CreateCopy(self)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEConfBase self) -> unsigned int"""
        return _oechem.OEConfBase_NumGroups(self)


    def NewGroup(self, *args) -> "OEChem::OEGroupBase *":
        """
        NewGroup(OEConfBase self, unsigned int type, OEAtomVector atoms) -> OEGroupBase
        NewGroup(OEConfBase self, unsigned int type, OEBondVector bonds) -> OEGroupBase
        NewGroup(OEConfBase self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase
        """
        return _oechem.OEConfBase_NewGroup(self, *args)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEConfBase self, OEGroupBase group) -> bool"""
        return _oechem.OEConfBase_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEConfBase self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEConfBase_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEConfBase self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEConfBase self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEConfBase_GetGroups(self, *args)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEConfBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        GetCoords(OEConfBase self, OEAtomBase arg2, float * arg3) -> bool
        GetCoords(OEConfBase self, OEAtomBase arg2, double * arg3) -> bool
        GetCoords(OEConfBase self, OEAtomBase arg2, long double * arg3) -> bool
        GetCoords(OEConfBase self, OEHalfFloat arg2) -> bool
        GetCoords(OEConfBase self, float * arg2) -> bool
        GetCoords(OEConfBase self, double * arg2) -> bool
        GetCoords(OEConfBase self, long double * arg2) -> bool
        GetCoords(OEConfBase self, OEAtomBase atom) -> PyObject
        GetCoords(OEConfBase self) -> PyObject *
        """
        return _oechem.OEConfBase_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEConfBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        SetCoords(OEConfBase self, OEAtomBase arg2, float const * arg3) -> bool
        SetCoords(OEConfBase self, OEAtomBase arg2, double const * arg3) -> bool
        SetCoords(OEConfBase self, OEAtomBase arg2, long double const * arg3) -> bool
        SetCoords(OEConfBase self, OEHalfFloat arg2) -> bool
        SetCoords(OEConfBase self, float const * arg2) -> bool
        SetCoords(OEConfBase self, double const * arg2) -> bool
        SetCoords(OEConfBase self, long double const * arg2) -> bool
        SetCoords(OEConfBase self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEConfBase self, PyObject * input) -> PyObject *
        """
        return _oechem.OEConfBase_SetCoords(self, *args)

OEConfBase_swigregister = _oechem.OEConfBase_swigregister
OEConfBase_swigregister(OEConfBase)

class OEConfVector(object):
    """Proxy of C++ std::vector<(p.OEChem::OEConfBase)> 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__(std::vector<(p.OEChem::OEConfBase)> self, unsigned int size=0) -> OEConfVector
        __init__(std::vector<(p.OEChem::OEConfBase)> self) -> OEConfVector
        __init__(std::vector<(p.OEChem::OEConfBase)> self, unsigned int size, OEChem::OEConfBase *& value) -> OEConfVector
        __init__(std::vector<(p.OEChem::OEConfBase)> self, OEConfVector arg2) -> OEConfVector
        """
        this = _oechem.new_OEConfVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __len__(self) -> "unsigned int":
        """__len__(OEConfVector self) -> unsigned int"""
        return _oechem.OEConfVector___len__(self)


    def clear(self) -> "void":
        """clear(OEConfVector self)"""
        return _oechem.OEConfVector_clear(self)


    def append(self, x: 'OEConfBase') -> "void":
        """append(OEConfVector self, OEConfBase x)"""
        return _oechem.OEConfVector_append(self, x)


    def __nonzero__(self) -> "bool":
        """__nonzero__(OEConfVector self) -> bool"""
        return _oechem.OEConfVector___nonzero__(self)


    def pop(self) -> "OEChem::OEConfBase *":
        """pop(OEConfVector self) -> OEConfBase"""
        return _oechem.OEConfVector_pop(self)


    def __getitem__(self, i: 'int') -> "OEChem::OEConfBase *":
        """__getitem__(OEConfVector self, int i) -> OEConfBase"""
        return _oechem.OEConfVector___getitem__(self, i)


    def __getslice__(self, i: 'int', j: 'int') -> "std::vector< OEChem::OEConfBase * >":
        """__getslice__(OEConfVector self, int i, int j) -> OEConfVector"""
        return _oechem.OEConfVector___getslice__(self, i, j)


    def __setitem__(self, i: 'int', x: 'OEConfBase') -> "void":
        """__setitem__(OEConfVector self, int i, OEConfBase x)"""
        return _oechem.OEConfVector___setitem__(self, i, x)


    def __setslice__(self, i: 'int', j: 'int', v: 'OEConfVector') -> "void":
        """__setslice__(OEConfVector self, int i, int j, OEConfVector v)"""
        return _oechem.OEConfVector___setslice__(self, i, j, v)


    def __delitem__(self, i: 'int') -> "void":
        """__delitem__(OEConfVector self, int i)"""
        return _oechem.OEConfVector___delitem__(self, i)


    def __delslice__(self, i: 'int', j: 'int') -> "void":
        """__delslice__(OEConfVector self, int i, int j)"""
        return _oechem.OEConfVector___delslice__(self, i, j)

    __swig_destroy__ = _oechem.delete_OEConfVector
    __del__ = lambda self: None
OEConfVector_swigregister = _oechem.OEConfVector_swigregister
OEConfVector_swigregister(OEConfVector)

class OEMCMolBase(OEMolBase):
    """Proxy of C++ OEChem::OEMCMolBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEMCMolBase
    __del__ = lambda self: None

    def SetActive(self, arg2: 'OEConfBase') -> "bool":
        """SetActive(OEMCMolBase self, OEConfBase arg2) -> bool"""
        return _oechem.OEMCMolBase_SetActive(self, arg2)


    def GetActive(self) -> "OEChem::OEConfBase *":
        """GetActive(OEMCMolBase self) -> OEConfBase"""
        return _oechem.OEMCMolBase_GetActive(self)


    def PushActive(self, arg2: 'OEConfBase') -> "bool":
        """PushActive(OEMCMolBase self, OEConfBase arg2) -> bool"""
        return _oechem.OEMCMolBase_PushActive(self, arg2)


    def PopActive(self) -> "void":
        """PopActive(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_PopActive(self)


    def GetMaxConfIdx(self) -> "unsigned int":
        """GetMaxConfIdx(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetMaxConfIdx(self)


    def NewConf(self, *args) -> "OEChem::OEConfBase *":
        """
        NewConf(OEMCMolBase self) -> OEConfBase
        NewConf(OEMCMolBase self, OEHalfFloat arg2) -> OEConfBase
        NewConf(OEMCMolBase self, float const * arg2) -> OEConfBase
        NewConf(OEMCMolBase self, double const * arg2) -> OEConfBase
        NewConf(OEMCMolBase self, long double const * arg2) -> OEConfBase
        NewConf(OEMCMolBase self, OEMolBase arg2) -> OEConfBase
        NewConf(OEMCMolBase self, OEConfBase arg2) -> OEConfBase
        NewConf(OEMCMolBase self, OEConfBase arg2, std::vector< OEChem::OETorsion > & t) -> OEConfBase
        NewConf(OEMCMolBase self, OEConfBase arg2, OETrans arg3) -> OEConfBase
        """
        return _oechem.OEMCMolBase_NewConf(self, *args)


    def NumConfs(self) -> "unsigned int":
        """NumConfs(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumConfs(self)


    def GetConf(self, arg2: 'OEUnaryConfPred') -> "OEChem::OEConfBase *":
        """GetConf(OEMCMolBase self, OEUnaryConfPred arg2) -> OEConfBase"""
        return _oechem.OEMCMolBase_GetConf(self, arg2)


    def DeleteConfs(self) -> "void":
        """DeleteConfs(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_DeleteConfs(self)


    def DeleteConf(self, arg2: 'OEConfBase') -> "bool":
        """DeleteConf(OEMCMolBase self, OEConfBase arg2) -> bool"""
        return _oechem.OEMCMolBase_DeleteConf(self, arg2)


    def SweepConfs(self) -> "bool":
        """SweepConfs(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_SweepConfs(self)


    def OrderConfs(self, arg2: 'OEConfVector') -> "bool":
        """OrderConfs(OEMCMolBase self, OEConfVector arg2) -> bool"""
        return _oechem.OEMCMolBase_OrderConfs(self, arg2)


    def GetConfs(self, *args) -> "OESystem::OEIterBase< OEChem::OEConfBase > *":
        """
        GetConfs(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEConfBase >
        GetConfs(OEMCMolBase self, OEUnaryConfPred arg2) -> OESystem::OEIterBase< OEChem::OEConfBase > *
        """
        return _oechem.OEMCMolBase_GetConfs(self, *args)


    def Clear(self) -> "void":
        """Clear(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_Clear(self)


    def ClearMolBase(self) -> "void":
        """ClearMolBase(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearMolBase(self)


    def ClearBase(self) -> "void":
        """ClearBase(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearBase(self)


    def ClearMCMol(self) -> "void":
        """ClearMCMol(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearMCMol(self)


    def Compress(self) -> "bool":
        """Compress(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumBonds(self)


    def Count(self, arg2: 'unsigned int') -> "unsigned int":
        """Count(OEMCMolBase self, unsigned int arg2) -> unsigned int"""
        return _oechem.OEMCMolBase_Count(self, arg2)


    def IsValid(self):
      return _oechem.OEMCMolBase___nonzero__(self)



    def SetEnergy(self, arg2: 'double') -> "bool":
        """SetEnergy(OEMCMolBase self, double arg2) -> bool"""
        return _oechem.OEMCMolBase_SetEnergy(self, arg2)


    def SetTitle(self, arg2: 'char const *') -> "bool":
        """SetTitle(OEMCMolBase self, char const * arg2) -> bool"""
        return _oechem.OEMCMolBase_SetTitle(self, arg2)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEMCMolBase self) -> double"""
        return _oechem.OEMCMolBase_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEMCMolBase self) -> char const *"""
        return _oechem.OEMCMolBase_GetTitle(self)


    def GetMCMolTitle(self) -> "char const *":
        """GetMCMolTitle(OEMCMolBase self) -> char const *"""
        return _oechem.OEMCMolBase_GetMCMolTitle(self)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEMCMolBase self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEMCMolBase_GetAtom(self, arg2)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEMCMolBase self, OEUnaryBondPred arg2) -> OEBondBase
        GetBond(OEMCMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMCMolBase_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEMCMolBase self, unsigned int arg2) -> OEAtomBase
        NewAtom(OEMCMolBase self, OEAtomBase arg2) -> OEAtomBase
        """
        return _oechem.OEMCMolBase_NewAtom(self, *args)


    def NewBond(self, arg2: 'OEAtomBase', arg3: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEMCMolBase self, OEAtomBase arg2, OEAtomBase arg3, unsigned int order=0) -> OEBondBase
        NewBond(OEMCMolBase self, OEAtomBase arg2, OEAtomBase arg3) -> OEBondBase
        """
        return _oechem.OEMCMolBase_NewBond(self, arg2, arg3, order)


    def DeleteAtom(self, arg2: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEMCMolBase self, OEAtomBase arg2) -> bool"""
        return _oechem.OEMCMolBase_DeleteAtom(self, arg2)


    def DeleteBond(self, arg2: 'OEBondBase') -> "bool":
        """DeleteBond(OEMCMolBase self, OEBondBase arg2) -> bool"""
        return _oechem.OEMCMolBase_DeleteBond(self, arg2)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEMCMolBase self, OEConfBase arg2) -> bool
        IsDeleted(OEMCMolBase self, OEAtomBase arg2) -> bool
        IsDeleted(OEMCMolBase self, OEBondBase arg2) -> bool
        """
        return _oechem.OEMCMolBase_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEMCMolBase self) -> bool"""
        return _oechem.OEMCMolBase_Sweep(self)


    def OrderAtoms(self, arg2: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEMCMolBase self, OEAtomVector arg2) -> bool"""
        return _oechem.OEMCMolBase_OrderAtoms(self, arg2)


    def OrderBonds(self, arg2: 'OEBondVector') -> "bool":
        """OrderBonds(OEMCMolBase self, OEBondVector arg2) -> bool"""
        return _oechem.OEMCMolBase_OrderBonds(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEMCMolBase self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEMCMolBase_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEMCMolBase self, OEUnaryBondPred arg2) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEMCMolBase_GetBonds(self, *args)


    def SetDimension(self, arg2: 'unsigned int') -> "bool":
        """SetDimension(OEMCMolBase self, unsigned int arg2) -> bool"""
        return _oechem.OEMCMolBase_SetDimension(self, arg2)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_GetDimension(self)


    def HasPerceived(self, tag: 'unsigned int') -> "bool":
        """HasPerceived(OEMCMolBase self, unsigned int tag) -> bool"""
        return _oechem.OEMCMolBase_HasPerceived(self, tag)


    def SetPerceived(self, tag: 'unsigned int', arg3: 'bool') -> "bool":
        """SetPerceived(OEMCMolBase self, unsigned int tag, bool arg3) -> bool"""
        return _oechem.OEMCMolBase_SetPerceived(self, tag, arg3)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEMCMolBase self)"""
        return _oechem.OEMCMolBase_ResetPerceived(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMCMolBase self) -> void const *"""
        return _oechem.OEMCMolBase_GetDataType(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMCMolBase self) -> OEBase"""
        return _oechem.OEMCMolBase_CreateCopy(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMCMolBase self, void const * type) -> bool"""
        return _oechem.OEMCMolBase_IsDataType(self, type)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEMCMolBase self) -> unsigned int"""
        return _oechem.OEMCMolBase_NumGroups(self)


    def NewGroup(self, *args) -> "OEChem::OEGroupBase *":
        """
        NewGroup(OEMCMolBase self, unsigned int type, OEAtomVector atoms) -> OEGroupBase
        NewGroup(OEMCMolBase self, unsigned int type, OEBondVector bonds) -> OEGroupBase
        NewGroup(OEMCMolBase self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase
        """
        return _oechem.OEMCMolBase_NewGroup(self, *args)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEMCMolBase self, OEGroupBase group) -> bool"""
        return _oechem.OEMCMolBase_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEMCMolBase self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEMCMolBase_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEMCMolBase self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEMCMolBase self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEMCMolBase_GetGroups(self, *args)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEMCMolBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase arg2, float * arg3) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase arg2, double * arg3) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase arg2, long double * arg3) -> bool
        GetCoords(OEMCMolBase self, OEHalfFloat arg2) -> bool
        GetCoords(OEMCMolBase self, float * arg2) -> bool
        GetCoords(OEMCMolBase self, double * arg2) -> bool
        GetCoords(OEMCMolBase self, long double * arg2) -> bool
        GetCoords(OEMCMolBase self, OEAtomBase atom) -> PyObject
        GetCoords(OEMCMolBase self) -> PyObject *
        """
        return _oechem.OEMCMolBase_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEMCMolBase self, OEAtomBase arg2, OEHalfFloat arg3) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase arg2, float const * arg3) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase arg2, double const * arg3) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase arg2, long double const * arg3) -> bool
        SetCoords(OEMCMolBase self, OEHalfFloat arg2) -> bool
        SetCoords(OEMCMolBase self, float const * arg2) -> bool
        SetCoords(OEMCMolBase self, double const * arg2) -> bool
        SetCoords(OEMCMolBase self, long double const * arg2) -> bool
        SetCoords(OEMCMolBase self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEMCMolBase self, PyObject * input) -> PyObject *
        """
        return _oechem.OEMCMolBase_SetCoords(self, *args)

OEMCMolBase_swigregister = _oechem.OEMCMolBase_swigregister
OEMCMolBase_swigregister(OEMCMolBase)


def OESetOEGraphMol(obj: 'OEBase', t: 'char const *', s: 'OEGraphMol') -> "bool":
    """OESetOEGraphMol(OEBase obj, char const * t, OEGraphMol s) -> bool"""
    return _oechem.OESetOEGraphMol(obj, t, s)

def OEGetOEGraphMol(obj: 'OEBase', t: 'char const *') -> "OEGraphMolWrapper":
    """OEGetOEGraphMol(OEBase obj, char const * t) -> OEGraphMol"""
    return _oechem.OEGetOEGraphMol(obj, t)

def OESetOEMol(obj: 'OEBase', t: 'char const *', s: 'OEMol') -> "bool":
    """OESetOEMol(OEBase obj, char const * t, OEMol s) -> bool"""
    return _oechem.OESetOEMol(obj, t, s)

def OEGetOEMol(obj: 'OEBase', t: 'char const *') -> "OEMolWrapper":
    """OEGetOEMol(OEBase obj, char const * t) -> OEMol"""
    return _oechem.OEGetOEMol(obj, t)

def OESetOEQMol(obj: 'OEBase', t: 'char const *', s: 'OEQMol') -> "bool":
    """OESetOEQMol(OEBase obj, char const * t, OEQMol s) -> bool"""
    return _oechem.OESetOEQMol(obj, t, s)

def OEGetOEQMol(obj: 'OEBase', t: 'char const *') -> "OEQMolWrapper":
    """OEGetOEQMol(OEBase obj, char const * t) -> OEQMol"""
    return _oechem.OEGetOEQMol(obj, t)

def OEGetOEContainer(obj: 'OEBase', t: 'char const *') -> "OESystem::OEContainer":
    """OEGetOEContainer(OEBase obj, char const * t) -> OEContainer"""
    return _oechem.OEGetOEContainer(obj, t)

def OESetOEContainer(obj: 'OEBase', t: 'char const *', c: 'OEContainer') -> "bool":
    """OESetOEContainer(OEBase obj, char const * t, OEContainer c) -> bool"""
    return _oechem.OESetOEContainer(obj, t, c)
class OEGraphMol(OEMolBase):
    """Proxy of C++ OEGraphMolWrapper 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__(OEGraphMolWrapper self, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEGraphMol mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEGraphMol mol) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMolBase mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMolBase mol) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEQMolBase mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEQMolBase mol) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMCMolBase mol, unsigned int t) -> OEGraphMol
        __init__(OEGraphMolWrapper self, OEMCMolBase mol) -> OEGraphMol
        """
        this = _oechem.new_OEGraphMol(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEGraphMol
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEGraphMol self)"""
        return _oechem.OEGraphMol_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_NumBonds(self)


    def Count(self, i: 'unsigned int') -> "unsigned int":
        """Count(OEGraphMol self, unsigned int i) -> unsigned int"""
        return _oechem.OEGraphMol_Count(self, i)


    def IsValid(self):
      return _oechem.OEGraphMol___nonzero__(self)



    def SetEnergy(self, e: 'double') -> "bool":
        """SetEnergy(OEGraphMol self, double e) -> bool"""
        return _oechem.OEGraphMol_SetEnergy(self, e)


    def SetTitle(self, t: 'char const *') -> "bool":
        """SetTitle(OEGraphMol self, char const * t) -> bool"""
        return _oechem.OEGraphMol_SetTitle(self, t)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEGraphMol self)"""
        return _oechem.OEGraphMol_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEGraphMol self) -> double"""
        return _oechem.OEGraphMol_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEGraphMol self) -> char const *"""
        return _oechem.OEGraphMol_GetTitle(self)


    def GetAtom(self, pred: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEGraphMol self, OEUnaryAtomPred pred) -> OEAtomBase"""
        return _oechem.OEGraphMol_GetAtom(self, pred)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEGraphMol self, OEUnaryBondPred pred) -> OEBondBase
        GetBond(OEGraphMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEGraphMol_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEGraphMol self, unsigned int element) -> OEAtomBase
        NewAtom(OEGraphMol self, OEAtomBase a) -> OEAtomBase
        """
        return _oechem.OEGraphMol_NewAtom(self, *args)


    def NewBond(self, a1: 'OEAtomBase', a2: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEGraphMol self, OEAtomBase a1, OEAtomBase a2, unsigned int order=0) -> OEBondBase
        NewBond(OEGraphMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEGraphMol_NewBond(self, a1, a2, order)


    def DeleteAtom(self, a: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEGraphMol self, OEAtomBase a) -> bool"""
        return _oechem.OEGraphMol_DeleteAtom(self, a)


    def DeleteBond(self, b: 'OEBondBase') -> "bool":
        """DeleteBond(OEGraphMol self, OEBondBase b) -> bool"""
        return _oechem.OEGraphMol_DeleteBond(self, b)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEGraphMol self, OEAtomBase a) -> bool
        IsDeleted(OEGraphMol self, OEBondBase b) -> bool
        """
        return _oechem.OEGraphMol_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_Sweep(self)


    def OrderAtoms(self, va: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEGraphMol self, OEAtomVector va) -> bool"""
        return _oechem.OEGraphMol_OrderAtoms(self, va)


    def OrderBonds(self, vb: 'OEBondVector') -> "bool":
        """OrderBonds(OEGraphMol self, OEBondVector vb) -> bool"""
        return _oechem.OEGraphMol_OrderBonds(self, vb)


    def SetRxn(self, b: 'bool') -> "bool":
        """SetRxn(OEGraphMol self, bool b) -> bool"""
        return _oechem.OEGraphMol_SetRxn(self, b)


    def IsRxn(self) -> "bool":
        """IsRxn(OEGraphMol self) -> bool"""
        return _oechem.OEGraphMol_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEGraphMol self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEGraphMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEGraphMol_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEGraphMol self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEGraphMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEGraphMol_GetBonds(self, *args)


    def SetDimension(self, d: 'unsigned int') -> "bool":
        """SetDimension(OEGraphMol self, unsigned int d) -> bool"""
        return _oechem.OEGraphMol_SetDimension(self, d)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEGraphMol self) -> unsigned int"""
        return _oechem.OEGraphMol_GetDimension(self)


    def HasPerceived(self, flag: 'unsigned int') -> "bool":
        """HasPerceived(OEGraphMol self, unsigned int flag) -> bool"""
        return _oechem.OEGraphMol_HasPerceived(self, flag)


    def SetPerceived(self, flag: 'unsigned int', b: 'bool') -> "bool":
        """SetPerceived(OEGraphMol self, unsigned int flag, bool b) -> bool"""
        return _oechem.OEGraphMol_SetPerceived(self, flag, b)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEGraphMol self)"""
        return _oechem.OEGraphMol_ResetPerceived(self)


    def SCMol(self, *args) -> "OEChem::OEMolBase &":
        """
        SCMol(OEGraphMol self) -> OEMolBase
        SCMol(OEGraphMol self) -> OEMolBase
        """
        return _oechem.OEGraphMol_SCMol(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEGraphMol self) -> void const *"""
        return _oechem.OEGraphMol_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEGraphMol self, void const * type) -> bool"""
        return _oechem.OEGraphMol_IsDataType(self, type)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEGraphMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom, float * xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom, double * xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom, long double * xyz) -> bool
        GetCoords(OEGraphMol self, OEHalfFloat xyz) -> bool
        GetCoords(OEGraphMol self, float * xyz) -> bool
        GetCoords(OEGraphMol self, double * xyz) -> bool
        GetCoords(OEGraphMol self, long double * xyz) -> bool
        GetCoords(OEGraphMol self, OEAtomBase atom) -> PyObject
        GetCoords(OEGraphMol self) -> PyObject *
        """
        return _oechem.OEGraphMol_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEGraphMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, float const * xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, double const * xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, long double const * xyz) -> bool
        SetCoords(OEGraphMol self, OEHalfFloat xyz) -> bool
        SetCoords(OEGraphMol self, float const * xyz) -> bool
        SetCoords(OEGraphMol self, double const * xyz) -> bool
        SetCoords(OEGraphMol self, long double const * xyz) -> bool
        SetCoords(OEGraphMol self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEGraphMol self, PyObject * input) -> PyObject *
        """
        return _oechem.OEGraphMol_SetCoords(self, *args)


    def __getstate__(self):
        return OEWriteMolToBytes(".oeb", self)



    def __setstate__(self, state):
        mol = OEGraphMol()
        if OEReadMolFromBytes(mol, ".oeb", state):
            self.__init__(mol)
        else:
            self.__init__()
        del mol


OEGraphMol_swigregister = _oechem.OEGraphMol_swigregister
OEGraphMol_swigregister(OEGraphMol)

class OEMol(OEMCMolBase):
    """Proxy of C++ OEMolWrapper 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__(OEMolWrapper self, unsigned int t) -> OEMol
        __init__(OEMolWrapper self) -> OEMol
        __init__(OEMolWrapper self, OEMol mol) -> OEMol
        __init__(OEMolWrapper self, OEMol mol, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEBase b, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEBase b) -> OEMol
        __init__(OEMolWrapper self, OEMolBase m, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEMolBase m) -> OEMol
        __init__(OEMolWrapper self, OEQMolBase m, unsigned int t) -> OEMol
        __init__(OEMolWrapper self, OEQMolBase m) -> OEMol
        __init__(OEMolWrapper self, OEMCMolBase m) -> OEMol
        __init__(OEMolWrapper self, OEMCMolBase m, unsigned int t) -> OEMol
        """
        this = _oechem.new_OEMol(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMol
    __del__ = lambda self: None

    def ClearMolBase(self) -> "void":
        """ClearMolBase(OEMol self)"""
        return _oechem.OEMol_ClearMolBase(self)


    def ClearBase(self) -> "void":
        """ClearBase(OEMol self)"""
        return _oechem.OEMol_ClearBase(self)


    def ClearMCMol(self) -> "void":
        """ClearMCMol(OEMol self)"""
        return _oechem.OEMol_ClearMCMol(self)


    def SetActive(self, c: 'OEConfBase') -> "bool":
        """SetActive(OEMol self, OEConfBase c) -> bool"""
        return _oechem.OEMol_SetActive(self, c)


    def GetActive(self) -> "OEChem::OEConfBase *":
        """GetActive(OEMol self) -> OEConfBase"""
        return _oechem.OEMol_GetActive(self)


    def PushActive(self, c: 'OEConfBase') -> "bool":
        """PushActive(OEMol self, OEConfBase c) -> bool"""
        return _oechem.OEMol_PushActive(self, c)


    def PopActive(self) -> "void":
        """PopActive(OEMol self)"""
        return _oechem.OEMol_PopActive(self)


    def GetMaxConfIdx(self) -> "unsigned int":
        """GetMaxConfIdx(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetMaxConfIdx(self)


    def NewConf(self, *args) -> "OEChem::OEConfBase *":
        """
        NewConf(OEMol self) -> OEConfBase
        NewConf(OEMol self, OEHalfFloat coords) -> OEConfBase
        NewConf(OEMol self, float const * coords) -> OEConfBase
        NewConf(OEMol self, double const * coords) -> OEConfBase
        NewConf(OEMol self, long double const * coords) -> OEConfBase
        NewConf(OEMol self, OEMolBase m) -> OEConfBase
        NewConf(OEMol self, OEConfBase c) -> OEConfBase
        NewConf(OEMol self, OEConfBase c, std::vector< OEChem::OETorsion > & t) -> OEConfBase
        NewConf(OEMol self, OEConfBase c, OETrans t) -> OEConfBase
        """
        return _oechem.OEMol_NewConf(self, *args)


    def NumConfs(self) -> "unsigned int":
        """NumConfs(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumConfs(self)


    def GetConf(self, p: 'OEUnaryConfPred') -> "OEChem::OEConfBase *":
        """GetConf(OEMol self, OEUnaryConfPred p) -> OEConfBase"""
        return _oechem.OEMol_GetConf(self, p)


    def DeleteConfs(self) -> "void":
        """DeleteConfs(OEMol self)"""
        return _oechem.OEMol_DeleteConfs(self)


    def DeleteConf(self, c: 'OEConfBase') -> "bool":
        """DeleteConf(OEMol self, OEConfBase c) -> bool"""
        return _oechem.OEMol_DeleteConf(self, c)


    def SweepConfs(self) -> "bool":
        """SweepConfs(OEMol self) -> bool"""
        return _oechem.OEMol_SweepConfs(self)


    def OrderConfs(self, vc: 'OEConfVector') -> "bool":
        """OrderConfs(OEMol self, OEConfVector vc) -> bool"""
        return _oechem.OEMol_OrderConfs(self, vc)


    def GetConfs(self, *args) -> "OESystem::OEIterBase< OEChem::OEConfBase > *":
        """
        GetConfs(OEMol self) -> OESystem::OEIterBase< OEChem::OEConfBase >
        GetConfs(OEMol self, OEUnaryConfPred pred) -> OESystem::OEIterBase< OEChem::OEConfBase > *
        """
        return _oechem.OEMol_GetConfs(self, *args)


    def Clear(self) -> "void":
        """Clear(OEMol self)"""
        return _oechem.OEMol_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEMol self) -> bool"""
        return _oechem.OEMol_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEMol self) -> bool"""
        return _oechem.OEMol_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumBonds(self)


    def Count(self, i: 'unsigned int') -> "unsigned int":
        """Count(OEMol self, unsigned int i) -> unsigned int"""
        return _oechem.OEMol_Count(self, i)


    def IsValid(self):
      return _oechem.OEMol___nonzero__(self)



    def SetEnergy(self, e: 'double') -> "bool":
        """SetEnergy(OEMol self, double e) -> bool"""
        return _oechem.OEMol_SetEnergy(self, e)


    def SetTitle(self, t: 'char const *') -> "bool":
        """SetTitle(OEMol self, char const * t) -> bool"""
        return _oechem.OEMol_SetTitle(self, t)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEMol self)"""
        return _oechem.OEMol_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEMol self) -> double"""
        return _oechem.OEMol_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEMol self) -> char const *"""
        return _oechem.OEMol_GetTitle(self)


    def GetMCMolTitle(self) -> "char const *":
        """GetMCMolTitle(OEMol self) -> char const *"""
        return _oechem.OEMol_GetMCMolTitle(self)


    def GetAtom(self, pred: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEMol self, OEUnaryAtomPred pred) -> OEAtomBase"""
        return _oechem.OEMol_GetAtom(self, pred)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEMol self, OEUnaryBondPred pred) -> OEBondBase
        GetBond(OEMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEMol_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEMol self, unsigned int element) -> OEAtomBase
        NewAtom(OEMol self, OEAtomBase a) -> OEAtomBase
        """
        return _oechem.OEMol_NewAtom(self, *args)


    def NewBond(self, a1: 'OEAtomBase', a2: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEMol self, OEAtomBase a1, OEAtomBase a2, unsigned int order=0) -> OEBondBase
        NewBond(OEMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEMol_NewBond(self, a1, a2, order)


    def DeleteAtom(self, a: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEMol self, OEAtomBase a) -> bool"""
        return _oechem.OEMol_DeleteAtom(self, a)


    def DeleteBond(self, b: 'OEBondBase') -> "bool":
        """DeleteBond(OEMol self, OEBondBase b) -> bool"""
        return _oechem.OEMol_DeleteBond(self, b)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEMol self, OEConfBase c) -> bool
        IsDeleted(OEMol self, OEAtomBase a) -> bool
        IsDeleted(OEMol self, OEBondBase b) -> bool
        """
        return _oechem.OEMol_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEMol self) -> bool"""
        return _oechem.OEMol_Sweep(self)


    def OrderAtoms(self, va: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEMol self, OEAtomVector va) -> bool"""
        return _oechem.OEMol_OrderAtoms(self, va)


    def OrderBonds(self, vb: 'OEBondVector') -> "bool":
        """OrderBonds(OEMol self, OEBondVector vb) -> bool"""
        return _oechem.OEMol_OrderBonds(self, vb)


    def SetRxn(self, b: 'bool') -> "bool":
        """SetRxn(OEMol self, bool b) -> bool"""
        return _oechem.OEMol_SetRxn(self, b)


    def IsRxn(self) -> "bool":
        """IsRxn(OEMol self) -> bool"""
        return _oechem.OEMol_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEMol self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEMol_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEMol self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEMol_GetBonds(self, *args)


    def SetDimension(self, d: 'unsigned int') -> "bool":
        """SetDimension(OEMol self, unsigned int d) -> bool"""
        return _oechem.OEMol_SetDimension(self, d)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEMol self) -> unsigned int"""
        return _oechem.OEMol_GetDimension(self)


    def HasPerceived(self, flag: 'unsigned int') -> "bool":
        """HasPerceived(OEMol self, unsigned int flag) -> bool"""
        return _oechem.OEMol_HasPerceived(self, flag)


    def SetPerceived(self, flag: 'unsigned int', b: 'bool') -> "bool":
        """SetPerceived(OEMol self, unsigned int flag, bool b) -> bool"""
        return _oechem.OEMol_SetPerceived(self, flag, b)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEMol self)"""
        return _oechem.OEMol_ResetPerceived(self)


    def SCMol(self, *args) -> "OEChem::OEMolBase &":
        """
        SCMol(OEMol self) -> OEMolBase
        SCMol(OEMol self) -> OEMolBase
        """
        return _oechem.OEMol_SCMol(self, *args)


    def MCMol(self, *args) -> "OEChem::OEMCMolBase &":
        """
        MCMol(OEMol self) -> OEMCMolBase
        MCMol(OEMol self) -> OEMCMolBase
        """
        return _oechem.OEMol_MCMol(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMol self) -> void const *"""
        return _oechem.OEMol_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMol self, void const * type) -> bool"""
        return _oechem.OEMol_IsDataType(self, type)


    def NumGroups(self) -> "unsigned int":
        """NumGroups(OEMol self) -> unsigned int"""
        return _oechem.OEMol_NumGroups(self)


    def NewGroup(self, *args) -> "OEChem::OEGroupBase *":
        """
        NewGroup(OEMol self, unsigned int type, OEAtomVector atoms) -> OEGroupBase
        NewGroup(OEMol self, unsigned int type, OEBondVector bonds) -> OEGroupBase
        NewGroup(OEMol self, unsigned int type, OEAtomVector atoms, OEBondVector bonds) -> OEGroupBase
        """
        return _oechem.OEMol_NewGroup(self, *args)


    def DeleteGroup(self, group: 'OEGroupBase') -> "bool":
        """DeleteGroup(OEMol self, OEGroupBase group) -> bool"""
        return _oechem.OEMol_DeleteGroup(self, group)


    def GetGroup(self, pred: 'OEUnaryGroupPred') -> "OEChem::OEGroupBase *":
        """GetGroup(OEMol self, OEUnaryGroupPred pred) -> OEGroupBase"""
        return _oechem.OEMol_GetGroup(self, pred)


    def GetGroups(self, *args) -> "OESystem::OEIterBase< OEChem::OEGroupBase > *":
        """
        GetGroups(OEMol self) -> OESystem::OEIterBase< OEChem::OEGroupBase >
        GetGroups(OEMol self, OEUnaryGroupPred pred) -> OESystem::OEIterBase< OEChem::OEGroupBase > *
        """
        return _oechem.OEMol_GetGroups(self, *args)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEMol self, OEAtomBase a, OEHalfFloat c) -> bool
        GetCoords(OEMol self, OEAtomBase a, float * c) -> bool
        GetCoords(OEMol self, OEAtomBase a, double * c) -> bool
        GetCoords(OEMol self, OEAtomBase a, long double * c) -> bool
        GetCoords(OEMol self, OEHalfFloat c) -> bool
        GetCoords(OEMol self, float * c) -> bool
        GetCoords(OEMol self, double * c) -> bool
        GetCoords(OEMol self, long double * c) -> bool
        GetCoords(OEMol self, OEAtomBase atom) -> PyObject
        GetCoords(OEMol self) -> PyObject *
        """
        return _oechem.OEMol_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEMol self, OEAtomBase a, OEHalfFloat c) -> bool
        SetCoords(OEMol self, OEAtomBase a, float const * c) -> bool
        SetCoords(OEMol self, OEAtomBase a, double const * c) -> bool
        SetCoords(OEMol self, OEAtomBase a, long double const * c) -> bool
        SetCoords(OEMol self, OEHalfFloat c) -> bool
        SetCoords(OEMol self, float const * c) -> bool
        SetCoords(OEMol self, double const * c) -> bool
        SetCoords(OEMol self, long double const * c) -> bool
        SetCoords(OEMol self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEMol self, PyObject * input) -> PyObject *
        """
        return _oechem.OEMol_SetCoords(self, *args)


    def __getstate__(self):
        return OEWriteMolToBytes(".oeb", self)



    def __setstate__(self, state):
        mol = OEMol()
        if OEReadMolFromBytes(mol, ".oeb", state):
            self.__init__(mol)
        else:
            self.__init__()
        del mol


OEMol_swigregister = _oechem.OEMol_swigregister
OEMol_swigregister(OEMol)

class OEQMol(OEQMolBase):
    """Proxy of C++ OEQMolWrapper 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__(OEQMolWrapper self, unsigned int type) -> OEQMol
        __init__(OEQMolWrapper self) -> OEQMol
        __init__(OEQMolWrapper self, OEQMol qmol, unsigned int type) -> OEQMol
        __init__(OEQMolWrapper self, OEQMol qmol) -> OEQMol
        __init__(OEQMolWrapper self, OEMolBase m, unsigned int t) -> OEQMol
        __init__(OEQMolWrapper self, OEMolBase m) -> OEQMol
        __init__(OEQMolWrapper self, OEQMolBase m, unsigned int t) -> OEQMol
        __init__(OEQMolWrapper self, OEQMolBase m) -> OEQMol
        __init__(OEQMolWrapper self, OEMCMolBase m, unsigned int t) -> OEQMol
        __init__(OEQMolWrapper self, OEMCMolBase m) -> OEQMol
        """
        this = _oechem.new_OEQMol(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEQMol
    __del__ = lambda self: None

    def BuildExpressions(self, *args) -> "bool":
        """
        BuildExpressions(OEQMol self, unsigned int atomopts, unsigned int bondopts) -> bool
        BuildExpressions(OEQMol self, OEChem::OEMatchPair< OEChem::OEExprBase > const & mp) -> bool
        """
        return _oechem.OEQMol_BuildExpressions(self, *args)


    def Clear(self) -> "void":
        """Clear(OEQMol self)"""
        return _oechem.OEQMol_Clear(self)


    def Compress(self) -> "bool":
        """Compress(OEQMol self) -> bool"""
        return _oechem.OEQMol_Compress(self)


    def UnCompress(self) -> "bool":
        """UnCompress(OEQMol self) -> bool"""
        return _oechem.OEQMol_UnCompress(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_NumBonds(self)


    def Count(self, i: 'unsigned int') -> "unsigned int":
        """Count(OEQMol self, unsigned int i) -> unsigned int"""
        return _oechem.OEQMol_Count(self, i)


    def IsValid(self):
      return _oechem.OEQMol___nonzero__(self)



    def SetEnergy(self, e: 'double') -> "bool":
        """SetEnergy(OEQMol self, double e) -> bool"""
        return _oechem.OEQMol_SetEnergy(self, e)


    def SetTitle(self, t: 'char const *') -> "bool":
        """SetTitle(OEQMol self, char const * t) -> bool"""
        return _oechem.OEQMol_SetTitle(self, t)


    def ClearCoords(self) -> "void":
        """ClearCoords(OEQMol self)"""
        return _oechem.OEQMol_ClearCoords(self)


    def GetEnergy(self) -> "double":
        """GetEnergy(OEQMol self) -> double"""
        return _oechem.OEQMol_GetEnergy(self)


    def GetMaxAtomIdx(self) -> "unsigned int":
        """GetMaxAtomIdx(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_GetMaxAtomIdx(self)


    def GetMaxBondIdx(self) -> "unsigned int":
        """GetMaxBondIdx(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_GetMaxBondIdx(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEQMol self) -> char const *"""
        return _oechem.OEQMol_GetTitle(self)


    def GetAtom(self, pred: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase *":
        """GetAtom(OEQMol self, OEUnaryAtomPred pred) -> OEAtomBase"""
        return _oechem.OEQMol_GetAtom(self, pred)


    def GetBond(self, *args) -> "OEChem::OEBondBase *":
        """
        GetBond(OEQMol self, OEUnaryBondPred pred) -> OEBondBase
        GetBond(OEQMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEQMol_GetBond(self, *args)


    def NewAtom(self, *args) -> "OEChem::OEAtomBase *":
        """
        NewAtom(OEQMol self, unsigned int element) -> OEAtomBase
        NewAtom(OEQMol self, OEAtomBase a) -> OEAtomBase
        """
        return _oechem.OEQMol_NewAtom(self, *args)


    def NewBond(self, a1: 'OEAtomBase', a2: 'OEAtomBase', order: 'unsigned int'=0) -> "OEChem::OEBondBase *":
        """
        NewBond(OEQMol self, OEAtomBase a1, OEAtomBase a2, unsigned int order=0) -> OEBondBase
        NewBond(OEQMol self, OEAtomBase a1, OEAtomBase a2) -> OEBondBase
        """
        return _oechem.OEQMol_NewBond(self, a1, a2, order)


    def DeleteAtom(self, a: 'OEAtomBase') -> "bool":
        """DeleteAtom(OEQMol self, OEAtomBase a) -> bool"""
        return _oechem.OEQMol_DeleteAtom(self, a)


    def DeleteBond(self, b: 'OEBondBase') -> "bool":
        """DeleteBond(OEQMol self, OEBondBase b) -> bool"""
        return _oechem.OEQMol_DeleteBond(self, b)


    def IsDeleted(self, *args) -> "bool":
        """
        IsDeleted(OEQMol self, OEAtomBase a) -> bool
        IsDeleted(OEQMol self, OEBondBase b) -> bool
        """
        return _oechem.OEQMol_IsDeleted(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEQMol self) -> bool"""
        return _oechem.OEQMol_Sweep(self)


    def OrderAtoms(self, va: 'OEAtomVector') -> "bool":
        """OrderAtoms(OEQMol self, OEAtomVector va) -> bool"""
        return _oechem.OEQMol_OrderAtoms(self, va)


    def OrderBonds(self, vb: 'OEBondVector') -> "bool":
        """OrderBonds(OEQMol self, OEBondVector vb) -> bool"""
        return _oechem.OEQMol_OrderBonds(self, vb)


    def SetRxn(self, b: 'bool') -> "bool":
        """SetRxn(OEQMol self, bool b) -> bool"""
        return _oechem.OEQMol_SetRxn(self, b)


    def IsRxn(self) -> "bool":
        """IsRxn(OEQMol self) -> bool"""
        return _oechem.OEQMol_IsRxn(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEQMol self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEQMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEQMol_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEQMol self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEQMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEQMol_GetBonds(self, *args)


    def GetQAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """
        GetQAtoms(OEQMol self) -> OESystem::OEIterBase< OEChem::OEQAtomBase >
        GetQAtoms(OEQMol self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *
        """
        return _oechem.OEQMol_GetQAtoms(self, *args)


    def GetQBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """
        GetQBonds(OEQMol self) -> OESystem::OEIterBase< OEChem::OEQBondBase >
        GetQBonds(OEQMol self, OEUnaryBondPred pred) -> OESystem::OEIterBase< OEChem::OEQBondBase > *
        """
        return _oechem.OEQMol_GetQBonds(self, *args)


    def SetDimension(self, d: 'unsigned int') -> "bool":
        """SetDimension(OEQMol self, unsigned int d) -> bool"""
        return _oechem.OEQMol_SetDimension(self, d)


    def GetDimension(self) -> "unsigned int":
        """GetDimension(OEQMol self) -> unsigned int"""
        return _oechem.OEQMol_GetDimension(self)


    def HasPerceived(self, flag: 'unsigned int') -> "bool":
        """HasPerceived(OEQMol self, unsigned int flag) -> bool"""
        return _oechem.OEQMol_HasPerceived(self, flag)


    def SetPerceived(self, flag: 'unsigned int', b: 'bool') -> "bool":
        """SetPerceived(OEQMol self, unsigned int flag, bool b) -> bool"""
        return _oechem.OEQMol_SetPerceived(self, flag, b)


    def ResetPerceived(self) -> "void":
        """ResetPerceived(OEQMol self)"""
        return _oechem.OEQMol_ResetPerceived(self)


    def SCMol(self, *args) -> "OEChem::OEMolBase &":
        """
        SCMol(OEQMol self) -> OEMolBase
        SCMol(OEQMol self) -> OEMolBase
        """
        return _oechem.OEQMol_SCMol(self, *args)


    def QMol(self, *args) -> "OEChem::OEQMolBase &":
        """
        QMol(OEQMol self) -> OEQMolBase
        QMol(OEQMol self) -> OEQMolBase
        """
        return _oechem.OEQMol_QMol(self, *args)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEQMol self) -> void const *"""
        return _oechem.OEQMol_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEQMol self, void const * type) -> bool"""
        return _oechem.OEQMol_IsDataType(self, type)


    def GetCoords(self, *args) -> "PyObject *":
        """
        GetCoords(OEQMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom, float * xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom, double * xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom, long double * xyz) -> bool
        GetCoords(OEQMol self, OEHalfFloat xyz) -> bool
        GetCoords(OEQMol self, float * xyz) -> bool
        GetCoords(OEQMol self, double * xyz) -> bool
        GetCoords(OEQMol self, long double * xyz) -> bool
        GetCoords(OEQMol self, OEAtomBase atom) -> PyObject
        GetCoords(OEQMol self) -> PyObject *
        """
        return _oechem.OEQMol_GetCoords(self, *args)


    def SetCoords(self, *args) -> "PyObject *":
        """
        SetCoords(OEQMol self, OEAtomBase atom, OEHalfFloat xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, float const * xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, double const * xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, long double const * xyz) -> bool
        SetCoords(OEQMol self, OEHalfFloat xyz) -> bool
        SetCoords(OEQMol self, float const * xyz) -> bool
        SetCoords(OEQMol self, double const * xyz) -> bool
        SetCoords(OEQMol self, long double const * xyz) -> bool
        SetCoords(OEQMol self, OEAtomBase atom, PyObject * input) -> PyObject
        SetCoords(OEQMol self, PyObject * input) -> PyObject *
        """
        return _oechem.OEQMol_SetCoords(self, *args)

OEQMol_swigregister = _oechem.OEQMol_swigregister
OEQMol_swigregister(OEQMol)

class OEResidue(object):
    """Proxy of C++ OEChem::OEResidue 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__(OEChem::OEResidue self) -> OEResidue
        __init__(OEChem::OEResidue self, OEResidue rhs) -> OEResidue
        """
        this = _oechem.new_OEResidue(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEResidue___nonzero__(self)



    def __lt__(self, rhs: 'OEResidue') -> "bool":
        """__lt__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___lt__(self, rhs)


    def __le__(self, rhs: 'OEResidue') -> "bool":
        """__le__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___le__(self, rhs)


    def __gt__(self, rhs: 'OEResidue') -> "bool":
        """__gt__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___gt__(self, rhs)


    def __ge__(self, rhs: 'OEResidue') -> "bool":
        """__ge__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___ge__(self, rhs)


    def __ne__(self, rhs: 'OEResidue') -> "bool":
        """__ne__(OEResidue self, OEResidue rhs) -> bool"""
        return _oechem.OEResidue___ne__(self, rhs)


    def GetName(self) -> "char const *":
        """GetName(OEResidue self) -> char const *"""
        return _oechem.OEResidue_GetName(self)


    def GetOccupancy(self) -> "float":
        """GetOccupancy(OEResidue self) -> float"""
        return _oechem.OEResidue_GetOccupancy(self)


    def GetBFactor(self) -> "float":
        """GetBFactor(OEResidue self) -> float"""
        return _oechem.OEResidue_GetBFactor(self)


    def GetResidueNumber(self) -> "int":
        """GetResidueNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetResidueNumber(self)


    def GetSerialNumber(self) -> "int":
        """GetSerialNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetSerialNumber(self)


    def GetModelNumber(self) -> "int":
        """GetModelNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetModelNumber(self)


    def GetFragmentNumber(self) -> "int":
        """GetFragmentNumber(OEResidue self) -> int"""
        return _oechem.OEResidue_GetFragmentNumber(self)


    def GetSecondaryStructure(self) -> "int":
        """GetSecondaryStructure(OEResidue self) -> int"""
        return _oechem.OEResidue_GetSecondaryStructure(self)


    def GetAlternateLocation(self) -> "char":
        """GetAlternateLocation(OEResidue self) -> char"""
        return _oechem.OEResidue_GetAlternateLocation(self)


    def GetChainID(self) -> "char":
        """GetChainID(OEResidue self) -> char"""
        return _oechem.OEResidue_GetChainID(self)


    def GetInsertCode(self) -> "char":
        """GetInsertCode(OEResidue self) -> char"""
        return _oechem.OEResidue_GetInsertCode(self)


    def IsHetAtom(self) -> "bool":
        """IsHetAtom(OEResidue self) -> bool"""
        return _oechem.OEResidue_IsHetAtom(self)


    def SetName(self, v: 'char const *') -> "bool":
        """SetName(OEResidue self, char const * v) -> bool"""
        return _oechem.OEResidue_SetName(self, v)


    def SetOccupancy(self, v: 'float') -> "bool":
        """SetOccupancy(OEResidue self, float v) -> bool"""
        return _oechem.OEResidue_SetOccupancy(self, v)


    def SetBFactor(self, v: 'float') -> "bool":
        """SetBFactor(OEResidue self, float v) -> bool"""
        return _oechem.OEResidue_SetBFactor(self, v)


    def SetResidueNumber(self, v: 'int') -> "bool":
        """SetResidueNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetResidueNumber(self, v)


    def SetSerialNumber(self, v: 'int') -> "bool":
        """SetSerialNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetSerialNumber(self, v)


    def SetModelNumber(self, v: 'int') -> "bool":
        """SetModelNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetModelNumber(self, v)


    def SetFragmentNumber(self, v: 'int') -> "bool":
        """SetFragmentNumber(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetFragmentNumber(self, v)


    def SetSecondaryStructure(self, v: 'int') -> "bool":
        """SetSecondaryStructure(OEResidue self, int v) -> bool"""
        return _oechem.OEResidue_SetSecondaryStructure(self, v)


    def SetAlternateLocation(self, v: 'char') -> "bool":
        """SetAlternateLocation(OEResidue self, char v) -> bool"""
        return _oechem.OEResidue_SetAlternateLocation(self, v)


    def SetChainID(self, v: 'char') -> "bool":
        """SetChainID(OEResidue self, char v) -> bool"""
        return _oechem.OEResidue_SetChainID(self, v)


    def SetInsertCode(self, v: 'char') -> "bool":
        """SetInsertCode(OEResidue self, char v) -> bool"""
        return _oechem.OEResidue_SetInsertCode(self, v)


    def SetHetAtom(self, v: 'bool') -> "bool":
        """SetHetAtom(OEResidue self, bool v) -> bool"""
        return _oechem.OEResidue_SetHetAtom(self, v)


    def __hash__(self) -> "PyObject *":
        """__hash__(OEResidue self) -> PyObject *"""
        return _oechem.OEResidue___hash__(self)


    def __eq__(self, *args) -> "bool":
        """
        __eq__(OEResidue self, OEResidue rhs) -> bool
        __eq__(OEResidue self, OEResidue rhs) -> bool
        """
        return _oechem.OEResidue___eq__(self, *args)


    def __str__(self) -> "std::string":
        """__str__(OEResidue self) -> std::string"""
        return _oechem.OEResidue___str__(self)

    __swig_destroy__ = _oechem.delete_OEResidue
    __del__ = lambda self: None
OEResidue_swigregister = _oechem.OEResidue_swigregister
OEResidue_swigregister(OEResidue)


def IsTrueDeprecated() -> "char const *":
    """IsTrueDeprecated() -> char const *"""
    return _oechem.IsTrueDeprecated()

def IsFalseDeprecated() -> "char const *":
    """IsFalseDeprecated() -> char const *"""
    return _oechem.IsFalseDeprecated()
class OEUnaryBaseBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OESystem::OEBase,bool)> 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__ = _oechem.delete_OEUnaryBaseBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEBase') -> "bool":
        """__call__(OEUnaryBaseBoolFunc self, OEBase arg0) -> bool"""
        return _oechem.OEUnaryBaseBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OESystem::OEBase,bool)> self) -> OEUnaryBaseBoolFunc"""
        if self.__class__ == OEUnaryBaseBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBaseBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBaseBoolFunc(self)
        return weakref_proxy(self)
OEUnaryBaseBoolFunc_swigregister = _oechem.OEUnaryBaseBoolFunc_swigregister
OEUnaryBaseBoolFunc_swigregister(OEUnaryBaseBoolFunc)

class OEUnaryBasePred(OEUnaryBaseBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OESystem::OEBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OESystem::OEBase)> self) -> OEUnaryBasePred"""
        if self.__class__ == OEUnaryBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBasePred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryBasePred
    __del__ = lambda self: None

    def __call__(self, a: 'OEBase') -> "bool":
        """__call__(OEUnaryBasePred self, OEBase a) -> bool"""
        return _oechem.OEUnaryBasePred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OESystem::OEBase > *":
        """CreatePredicateCopy(OEUnaryBasePred self) -> OEUnaryBasePred"""
        return _oechem.OEUnaryBasePred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBasePred(self)
        return weakref_proxy(self)
OEUnaryBasePred_swigregister = _oechem.OEUnaryBasePred_swigregister
OEUnaryBasePred_swigregister(OEUnaryBasePred)

class OEBinaryBaseFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OESystem::OEBase,OESystem::OEBase,bool)> 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__ = _oechem.delete_OEBinaryBaseFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEBase', a2: 'OEBase') -> "bool":
        """__call__(OEBinaryBaseFunc self, OEBase a1, OEBase a2) -> bool"""
        return _oechem.OEBinaryBaseFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OESystem::OEBase,OESystem::OEBase,bool)> self) -> OEBinaryBaseFunc"""
        if self.__class__ == OEBinaryBaseFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBaseFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBaseFunc(self)
        return weakref_proxy(self)
OEBinaryBaseFunc_swigregister = _oechem.OEBinaryBaseFunc_swigregister
OEBinaryBaseFunc_swigregister(OEBinaryBaseFunc)

class OEBinaryBasePred(OEBinaryBaseFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OESystem::OEBase,OESystem::OEBase)> class."""

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

    def __call__(self, a1: 'OEBase', a2: 'OEBase') -> "bool":
        """__call__(OEBinaryBasePred self, OEBase a1, OEBase a2) -> bool"""
        return _oechem.OEBinaryBasePred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OESystem::OEBase,OESystem::OEBase > *":
        """CreatePredicateCopy(OEBinaryBasePred self) -> OEBinaryBasePred"""
        return _oechem.OEBinaryBasePred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OESystem::OEBase,OESystem::OEBase)> self) -> OEBinaryBasePred"""
        if self.__class__ == OEBinaryBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBasePred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryBasePred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBasePred(self)
        return weakref_proxy(self)
OEBinaryBasePred_swigregister = _oechem.OEBinaryBasePred_swigregister
OEBinaryBasePred_swigregister(OEBinaryBasePred)


class OENotBase(OEUnaryBasePred):
    """Negation of an OEUnary Base Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Base Pred func) -> OENotNAME"""
        OEUnaryBasePred.__init__(self)
        if not isinstance(func, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndBase(OEUnaryBasePred):
    """Logical 'and' of two OEUnary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Base Pred func1, OEUnary Base Pred func2) -> OEAnd Base"""
        OEUnaryBasePred.__init__(self)
        if not isinstance(func1, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrBase(OEUnaryBasePred):
    """Logical 'or' of two OEUnary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Base"""
        OEUnaryBasePred.__init__(self)
        if not isinstance(func1, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBasePred):
            raise TypeError("Expected a OEUnary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotBase(OEBinaryBasePred):
    """Negation of an OEBinary Base Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Base Pred func) -> OENot Base"""
        OEBinaryBasePred.__init__(self)
        if not isinstance(func, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEBase obj1, OEBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndBase(OEBinaryBasePred):
    """Logical 'and' of two OEBinary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Base"""
        OEBinaryBasePred.__init__(self)
        if not isinstance(func1, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBase obj1, OEBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrBase(OEBinaryBasePred):
    """Logical 'or' of two OEBinary Base Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Base"""
        OEBinaryBasePred.__init__(self)
        if not isinstance(func1, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBasePred):
            raise TypeError("Expected a OEBinary Base Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBase obj1, OEBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryAtomBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEAtomBase,bool)> 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__ = _oechem.delete_OEUnaryAtomBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEAtomBase') -> "bool":
        """__call__(OEUnaryAtomBoolFunc self, OEAtomBase arg0) -> bool"""
        return _oechem.OEUnaryAtomBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEAtomBase,bool)> self) -> OEUnaryAtomBoolFunc"""
        if self.__class__ == OEUnaryAtomBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryAtomBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryAtomBoolFunc(self)
        return weakref_proxy(self)
OEUnaryAtomBoolFunc_swigregister = _oechem.OEUnaryAtomBoolFunc_swigregister
OEUnaryAtomBoolFunc_swigregister(OEUnaryAtomBoolFunc)

class OEUnaryAtomPred(OEUnaryAtomBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEAtomBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEChem::OEAtomBase)> self) -> OEUnaryAtomPred"""
        if self.__class__ == OEUnaryAtomPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryAtomPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryAtomPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEAtomBase') -> "bool":
        """__call__(OEUnaryAtomPred self, OEAtomBase a) -> bool"""
        return _oechem.OEUnaryAtomPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """CreatePredicateCopy(OEUnaryAtomPred self) -> OEUnaryAtomPred"""
        return _oechem.OEUnaryAtomPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryAtomPred(self)
        return weakref_proxy(self)
OEUnaryAtomPred_swigregister = _oechem.OEUnaryAtomPred_swigregister
OEUnaryAtomPred_swigregister(OEUnaryAtomPred)

class OEBinaryAtomFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEAtomBase,OEChem::OEAtomBase,bool)> 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__ = _oechem.delete_OEBinaryAtomFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEAtomBase', a2: 'OEAtomBase') -> "bool":
        """__call__(OEBinaryAtomFunc self, OEAtomBase a1, OEAtomBase a2) -> bool"""
        return _oechem.OEBinaryAtomFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEAtomBase,OEChem::OEAtomBase,bool)> self) -> OEBinaryAtomFunc"""
        if self.__class__ == OEBinaryAtomFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryAtomFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryAtomFunc(self)
        return weakref_proxy(self)
OEBinaryAtomFunc_swigregister = _oechem.OEBinaryAtomFunc_swigregister
OEBinaryAtomFunc_swigregister(OEBinaryAtomFunc)

class OEBinaryAtomPred(OEBinaryAtomFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEAtomBase,OEChem::OEAtomBase)> class."""

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

    def __call__(self, a1: 'OEAtomBase', a2: 'OEAtomBase') -> "bool":
        """__call__(OEBinaryAtomPred self, OEAtomBase a1, OEAtomBase a2) -> bool"""
        return _oechem.OEBinaryAtomPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEAtomBase,OEChem::OEAtomBase > *":
        """CreatePredicateCopy(OEBinaryAtomPred self) -> OEBinaryAtomPred"""
        return _oechem.OEBinaryAtomPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEAtomBase,OEChem::OEAtomBase)> self) -> OEBinaryAtomPred"""
        if self.__class__ == OEBinaryAtomPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryAtomPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryAtomPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryAtomPred(self)
        return weakref_proxy(self)
OEBinaryAtomPred_swigregister = _oechem.OEBinaryAtomPred_swigregister
OEBinaryAtomPred_swigregister(OEBinaryAtomPred)


class OENotAtom(OEUnaryAtomPred):
    """Negation of an OEUnary Atom Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Atom Pred func) -> OENotNAME"""
        OEUnaryAtomPred.__init__(self)
        if not isinstance(func, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEAtomBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndAtom(OEUnaryAtomPred):
    """Logical 'and' of two OEUnary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Atom Pred func1, OEUnary Atom Pred func2) -> OEAnd Atom"""
        OEUnaryAtomPred.__init__(self)
        if not isinstance(func1, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEAtomBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrAtom(OEUnaryAtomPred):
    """Logical 'or' of two OEUnary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Atom"""
        OEUnaryAtomPred.__init__(self)
        if not isinstance(func1, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryAtomPred):
            raise TypeError("Expected a OEUnary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEAtomBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotAtom(OEBinaryAtomPred):
    """Negation of an OEBinary Atom Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Atom Pred func) -> OENot Atom"""
        OEBinaryAtomPred.__init__(self)
        if not isinstance(func, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEAtomBase obj1, OEAtomBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndAtom(OEBinaryAtomPred):
    """Logical 'and' of two OEBinary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Atom"""
        OEBinaryAtomPred.__init__(self)
        if not isinstance(func1, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEAtomBase obj1, OEAtomBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrAtom(OEBinaryAtomPred):
    """Logical 'or' of two OEBinary Atom Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Atom"""
        OEBinaryAtomPred.__init__(self)
        if not isinstance(func1, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryAtomPred):
            raise TypeError("Expected a OEBinary Atom Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEAtomBase obj1, OEAtomBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryBondBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEBondBase,bool)> 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__ = _oechem.delete_OEUnaryBondBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEBondBase') -> "bool":
        """__call__(OEUnaryBondBoolFunc self, OEBondBase arg0) -> bool"""
        return _oechem.OEUnaryBondBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEBondBase,bool)> self) -> OEUnaryBondBoolFunc"""
        if self.__class__ == OEUnaryBondBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBondBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBondBoolFunc(self)
        return weakref_proxy(self)
OEUnaryBondBoolFunc_swigregister = _oechem.OEUnaryBondBoolFunc_swigregister
OEUnaryBondBoolFunc_swigregister(OEUnaryBondBoolFunc)

class OEUnaryBondPred(OEUnaryBondBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEBondBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEChem::OEBondBase)> self) -> OEUnaryBondPred"""
        if self.__class__ == OEUnaryBondPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryBondPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryBondPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEBondBase') -> "bool":
        """__call__(OEUnaryBondPred self, OEBondBase a) -> bool"""
        return _oechem.OEUnaryBondPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """CreatePredicateCopy(OEUnaryBondPred self) -> OEUnaryBondPred"""
        return _oechem.OEUnaryBondPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryBondPred(self)
        return weakref_proxy(self)
OEUnaryBondPred_swigregister = _oechem.OEUnaryBondPred_swigregister
OEUnaryBondPred_swigregister(OEUnaryBondPred)

class OEBinaryBondFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEBondBase,OEChem::OEBondBase,bool)> 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__ = _oechem.delete_OEBinaryBondFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEBondBase', a2: 'OEBondBase') -> "bool":
        """__call__(OEBinaryBondFunc self, OEBondBase a1, OEBondBase a2) -> bool"""
        return _oechem.OEBinaryBondFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEBondBase,OEChem::OEBondBase,bool)> self) -> OEBinaryBondFunc"""
        if self.__class__ == OEBinaryBondFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBondFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBondFunc(self)
        return weakref_proxy(self)
OEBinaryBondFunc_swigregister = _oechem.OEBinaryBondFunc_swigregister
OEBinaryBondFunc_swigregister(OEBinaryBondFunc)

class OEBinaryBondPred(OEBinaryBondFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEBondBase,OEChem::OEBondBase)> class."""

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

    def __call__(self, a1: 'OEBondBase', a2: 'OEBondBase') -> "bool":
        """__call__(OEBinaryBondPred self, OEBondBase a1, OEBondBase a2) -> bool"""
        return _oechem.OEBinaryBondPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEBondBase,OEChem::OEBondBase > *":
        """CreatePredicateCopy(OEBinaryBondPred self) -> OEBinaryBondPred"""
        return _oechem.OEBinaryBondPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEBondBase,OEChem::OEBondBase)> self) -> OEBinaryBondPred"""
        if self.__class__ == OEBinaryBondPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryBondPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryBondPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryBondPred(self)
        return weakref_proxy(self)
OEBinaryBondPred_swigregister = _oechem.OEBinaryBondPred_swigregister
OEBinaryBondPred_swigregister(OEBinaryBondPred)


class OENotBond(OEUnaryBondPred):
    """Negation of an OEUnary Bond Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Bond Pred func) -> OENotNAME"""
        OEUnaryBondPred.__init__(self)
        if not isinstance(func, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEBondBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndBond(OEUnaryBondPred):
    """Logical 'and' of two OEUnary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Bond Pred func1, OEUnary Bond Pred func2) -> OEAnd Bond"""
        OEUnaryBondPred.__init__(self)
        if not isinstance(func1, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBondBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrBond(OEUnaryBondPred):
    """Logical 'or' of two OEUnary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Bond"""
        OEUnaryBondPred.__init__(self)
        if not isinstance(func1, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryBondPred):
            raise TypeError("Expected a OEUnary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEBondBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotBond(OEBinaryBondPred):
    """Negation of an OEBinary Bond Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Bond Pred func) -> OENot Bond"""
        OEBinaryBondPred.__init__(self)
        if not isinstance(func, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEBondBase obj1, OEBondBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndBond(OEBinaryBondPred):
    """Logical 'and' of two OEBinary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Bond"""
        OEBinaryBondPred.__init__(self)
        if not isinstance(func1, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBondBase obj1, OEBondBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrBond(OEBinaryBondPred):
    """Logical 'or' of two OEBinary Bond Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Bond"""
        OEBinaryBondPred.__init__(self)
        if not isinstance(func1, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryBondPred):
            raise TypeError("Expected a OEBinary Bond Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEBondBase obj1, OEBondBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryConfBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEConfBase,bool)> 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__ = _oechem.delete_OEUnaryConfBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEConfBase') -> "bool":
        """__call__(OEUnaryConfBoolFunc self, OEConfBase arg0) -> bool"""
        return _oechem.OEUnaryConfBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEConfBase,bool)> self) -> OEUnaryConfBoolFunc"""
        if self.__class__ == OEUnaryConfBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryConfBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryConfBoolFunc(self)
        return weakref_proxy(self)
OEUnaryConfBoolFunc_swigregister = _oechem.OEUnaryConfBoolFunc_swigregister
OEUnaryConfBoolFunc_swigregister(OEUnaryConfBoolFunc)

class OEUnaryConfPred(OEUnaryConfBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEConfBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEChem::OEConfBase)> self) -> OEUnaryConfPred"""
        if self.__class__ == OEUnaryConfPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryConfPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryConfPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEConfBase') -> "bool":
        """__call__(OEUnaryConfPred self, OEConfBase a) -> bool"""
        return _oechem.OEUnaryConfPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEConfBase > *":
        """CreatePredicateCopy(OEUnaryConfPred self) -> OEUnaryConfPred"""
        return _oechem.OEUnaryConfPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryConfPred(self)
        return weakref_proxy(self)
OEUnaryConfPred_swigregister = _oechem.OEUnaryConfPred_swigregister
OEUnaryConfPred_swigregister(OEUnaryConfPred)

class OEBinaryConfFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEConfBase,OEChem::OEConfBase,bool)> 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__ = _oechem.delete_OEBinaryConfFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEConfBase', a2: 'OEConfBase') -> "bool":
        """__call__(OEBinaryConfFunc self, OEConfBase a1, OEConfBase a2) -> bool"""
        return _oechem.OEBinaryConfFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEConfBase,OEChem::OEConfBase,bool)> self) -> OEBinaryConfFunc"""
        if self.__class__ == OEBinaryConfFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryConfFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryConfFunc(self)
        return weakref_proxy(self)
OEBinaryConfFunc_swigregister = _oechem.OEBinaryConfFunc_swigregister
OEBinaryConfFunc_swigregister(OEBinaryConfFunc)

class OEBinaryConfPred(OEBinaryConfFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEConfBase,OEChem::OEConfBase)> class."""

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

    def __call__(self, a1: 'OEConfBase', a2: 'OEConfBase') -> "bool":
        """__call__(OEBinaryConfPred self, OEConfBase a1, OEConfBase a2) -> bool"""
        return _oechem.OEBinaryConfPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEConfBase,OEChem::OEConfBase > *":
        """CreatePredicateCopy(OEBinaryConfPred self) -> OEBinaryConfPred"""
        return _oechem.OEBinaryConfPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEConfBase,OEChem::OEConfBase)> self) -> OEBinaryConfPred"""
        if self.__class__ == OEBinaryConfPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryConfPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryConfPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryConfPred(self)
        return weakref_proxy(self)
OEBinaryConfPred_swigregister = _oechem.OEBinaryConfPred_swigregister
OEBinaryConfPred_swigregister(OEBinaryConfPred)


class OENotConf(OEUnaryConfPred):
    """Negation of an OEUnary Conf Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Conf Pred func) -> OENotNAME"""
        OEUnaryConfPred.__init__(self)
        if not isinstance(func, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEConfBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndConf(OEUnaryConfPred):
    """Logical 'and' of two OEUnary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Conf Pred func1, OEUnary Conf Pred func2) -> OEAnd Conf"""
        OEUnaryConfPred.__init__(self)
        if not isinstance(func1, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEConfBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrConf(OEUnaryConfPred):
    """Logical 'or' of two OEUnary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Conf"""
        OEUnaryConfPred.__init__(self)
        if not isinstance(func1, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryConfPred):
            raise TypeError("Expected a OEUnary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEConfBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotConf(OEBinaryConfPred):
    """Negation of an OEBinary Conf Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Conf Pred func) -> OENot Conf"""
        OEBinaryConfPred.__init__(self)
        if not isinstance(func, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEConfBase obj1, OEConfBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndConf(OEBinaryConfPred):
    """Logical 'and' of two OEBinary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Conf"""
        OEBinaryConfPred.__init__(self)
        if not isinstance(func1, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEConfBase obj1, OEConfBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrConf(OEBinaryConfPred):
    """Logical 'or' of two OEBinary Conf Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Conf"""
        OEBinaryConfPred.__init__(self)
        if not isinstance(func1, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryConfPred):
            raise TypeError("Expected a OEBinary Conf Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEConfBase obj1, OEConfBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryMolBaseBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEMolBase,bool)> 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__ = _oechem.delete_OEUnaryMolBaseBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEMolBase') -> "bool":
        """__call__(OEUnaryMolBaseBoolFunc self, OEMolBase arg0) -> bool"""
        return _oechem.OEUnaryMolBaseBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEMolBase,bool)> self) -> OEUnaryMolBaseBoolFunc"""
        if self.__class__ == OEUnaryMolBaseBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryMolBaseBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryMolBaseBoolFunc(self)
        return weakref_proxy(self)
OEUnaryMolBaseBoolFunc_swigregister = _oechem.OEUnaryMolBaseBoolFunc_swigregister
OEUnaryMolBaseBoolFunc_swigregister(OEUnaryMolBaseBoolFunc)

class OEUnaryMolBasePred(OEUnaryMolBaseBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(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):
        """__init__(OESystem::OEUnaryPredicate<(OEChem::OEMolBase)> self) -> OEUnaryMolBasePred"""
        if self.__class__ == OEUnaryMolBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryMolBasePred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryMolBasePred
    __del__ = lambda self: None

    def __call__(self, a: 'OEMolBase') -> "bool":
        """__call__(OEUnaryMolBasePred self, OEMolBase a) -> bool"""
        return _oechem.OEUnaryMolBasePred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEMolBase > *":
        """CreatePredicateCopy(OEUnaryMolBasePred self) -> OEUnaryMolBasePred"""
        return _oechem.OEUnaryMolBasePred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryMolBasePred(self)
        return weakref_proxy(self)
OEUnaryMolBasePred_swigregister = _oechem.OEUnaryMolBasePred_swigregister
OEUnaryMolBasePred_swigregister(OEUnaryMolBasePred)

class OEBinaryMolBaseFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEMolBase,OEChem::OEMolBase,bool)> 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__ = _oechem.delete_OEBinaryMolBaseFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEMolBase', a2: 'OEMolBase') -> "bool":
        """__call__(OEBinaryMolBaseFunc self, OEMolBase a1, OEMolBase a2) -> bool"""
        return _oechem.OEBinaryMolBaseFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEMolBase,OEChem::OEMolBase,bool)> self) -> OEBinaryMolBaseFunc"""
        if self.__class__ == OEBinaryMolBaseFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryMolBaseFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryMolBaseFunc(self)
        return weakref_proxy(self)
OEBinaryMolBaseFunc_swigregister = _oechem.OEBinaryMolBaseFunc_swigregister
OEBinaryMolBaseFunc_swigregister(OEBinaryMolBaseFunc)

class OEBinaryMolBasePred(OEBinaryMolBaseFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEMolBase,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 __call__(self, a1: 'OEMolBase', a2: 'OEMolBase') -> "bool":
        """__call__(OEBinaryMolBasePred self, OEMolBase a1, OEMolBase a2) -> bool"""
        return _oechem.OEBinaryMolBasePred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEMolBase,OEChem::OEMolBase > *":
        """CreatePredicateCopy(OEBinaryMolBasePred self) -> OEBinaryMolBasePred"""
        return _oechem.OEBinaryMolBasePred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEMolBase,OEChem::OEMolBase)> self) -> OEBinaryMolBasePred"""
        if self.__class__ == OEBinaryMolBasePred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryMolBasePred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryMolBasePred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryMolBasePred(self)
        return weakref_proxy(self)
OEBinaryMolBasePred_swigregister = _oechem.OEBinaryMolBasePred_swigregister
OEBinaryMolBasePred_swigregister(OEBinaryMolBasePred)


class OENotMolBase(OEUnaryMolBasePred):
    """Negation of an OEUnary MolBase Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary MolBase Pred func) -> OENotNAME"""
        OEUnaryMolBasePred.__init__(self)
        if not isinstance(func, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEMolBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndMolBase(OEUnaryMolBasePred):
    """Logical 'and' of two OEUnary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary MolBase Pred func1, OEUnary MolBase Pred func2) -> OEAnd MolBase"""
        OEUnaryMolBasePred.__init__(self)
        if not isinstance(func1, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEMolBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrMolBase(OEUnaryMolBasePred):
    """Logical 'or' of two OEUnary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd MolBase"""
        OEUnaryMolBasePred.__init__(self)
        if not isinstance(func1, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryMolBasePred):
            raise TypeError("Expected a OEUnary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEMolBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotMolBase(OEBinaryMolBasePred):
    """Negation of an OEBinary MolBase Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary MolBase Pred func) -> OENot MolBase"""
        OEBinaryMolBasePred.__init__(self)
        if not isinstance(func, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEMolBase obj1, OEMolBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndMolBase(OEBinaryMolBasePred):
    """Logical 'and' of two OEBinary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd MolBase"""
        OEBinaryMolBasePred.__init__(self)
        if not isinstance(func1, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEMolBase obj1, OEMolBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrMolBase(OEBinaryMolBasePred):
    """Logical 'or' of two OEBinary MolBase Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd MolBase"""
        OEBinaryMolBasePred.__init__(self)
        if not isinstance(func1, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryMolBasePred):
            raise TypeError("Expected a OEBinary MolBase Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEMolBase obj1, OEMolBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryGraphMolBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEGraphMolWrapper,bool)> 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__ = _oechem.delete_OEUnaryGraphMolBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEGraphMol') -> "bool":
        """__call__(OEUnaryGraphMolBoolFunc self, OEGraphMol arg0) -> bool"""
        return _oechem.OEUnaryGraphMolBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEGraphMolWrapper,bool)> self) -> OEUnaryGraphMolBoolFunc"""
        if self.__class__ == OEUnaryGraphMolBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGraphMolBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGraphMolBoolFunc(self)
        return weakref_proxy(self)
OEUnaryGraphMolBoolFunc_swigregister = _oechem.OEUnaryGraphMolBoolFunc_swigregister
OEUnaryGraphMolBoolFunc_swigregister(OEUnaryGraphMolBoolFunc)

class OEUnaryGraphMolPred(OEUnaryGraphMolBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEGraphMolWrapper)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEGraphMolWrapper)> self) -> OEUnaryGraphMolPred"""
        if self.__class__ == OEUnaryGraphMolPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGraphMolPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryGraphMolPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEGraphMol') -> "bool":
        """__call__(OEUnaryGraphMolPred self, OEGraphMol a) -> bool"""
        return _oechem.OEUnaryGraphMolPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEGraphMolWrapper > *":
        """CreatePredicateCopy(OEUnaryGraphMolPred self) -> OEUnaryGraphMolPred"""
        return _oechem.OEUnaryGraphMolPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGraphMolPred(self)
        return weakref_proxy(self)
OEUnaryGraphMolPred_swigregister = _oechem.OEUnaryGraphMolPred_swigregister
OEUnaryGraphMolPred_swigregister(OEUnaryGraphMolPred)

class OEBinaryGraphMolFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEGraphMolWrapper,OEGraphMolWrapper,bool)> 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__ = _oechem.delete_OEBinaryGraphMolFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEGraphMol', a2: 'OEGraphMol') -> "bool":
        """__call__(OEBinaryGraphMolFunc self, OEGraphMol a1, OEGraphMol a2) -> bool"""
        return _oechem.OEBinaryGraphMolFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEGraphMolWrapper,OEGraphMolWrapper,bool)> self) -> OEBinaryGraphMolFunc"""
        if self.__class__ == OEBinaryGraphMolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGraphMolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGraphMolFunc(self)
        return weakref_proxy(self)
OEBinaryGraphMolFunc_swigregister = _oechem.OEBinaryGraphMolFunc_swigregister
OEBinaryGraphMolFunc_swigregister(OEBinaryGraphMolFunc)

class OEBinaryGraphMolPred(OEBinaryGraphMolFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEGraphMolWrapper,OEGraphMolWrapper)> class."""

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

    def __call__(self, a1: 'OEGraphMol', a2: 'OEGraphMol') -> "bool":
        """__call__(OEBinaryGraphMolPred self, OEGraphMol a1, OEGraphMol a2) -> bool"""
        return _oechem.OEBinaryGraphMolPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEGraphMolWrapper,OEGraphMolWrapper > *":
        """CreatePredicateCopy(OEBinaryGraphMolPred self) -> OEBinaryGraphMolPred"""
        return _oechem.OEBinaryGraphMolPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEGraphMolWrapper,OEGraphMolWrapper)> self) -> OEBinaryGraphMolPred"""
        if self.__class__ == OEBinaryGraphMolPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGraphMolPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryGraphMolPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGraphMolPred(self)
        return weakref_proxy(self)
OEBinaryGraphMolPred_swigregister = _oechem.OEBinaryGraphMolPred_swigregister
OEBinaryGraphMolPred_swigregister(OEBinaryGraphMolPred)


class OENotGraphMol(OEUnaryGraphMolPred):
    """Negation of an OEUnary GraphMol Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary GraphMol Pred func) -> OENotNAME"""
        OEUnaryGraphMolPred.__init__(self)
        if not isinstance(func, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEGraphMol obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndGraphMol(OEUnaryGraphMolPred):
    """Logical 'and' of two OEUnary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary GraphMol Pred func1, OEUnary GraphMol Pred func2) -> OEAnd GraphMol"""
        OEUnaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGraphMol obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrGraphMol(OEUnaryGraphMolPred):
    """Logical 'or' of two OEUnary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd GraphMol"""
        OEUnaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGraphMolPred):
            raise TypeError("Expected a OEUnary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGraphMol obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotGraphMol(OEBinaryGraphMolPred):
    """Negation of an OEBinary GraphMol Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary GraphMol Pred func) -> OENot GraphMol"""
        OEBinaryGraphMolPred.__init__(self)
        if not isinstance(func, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEGraphMol obj1, OEGraphMol obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndGraphMol(OEBinaryGraphMolPred):
    """Logical 'and' of two OEBinary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd GraphMol"""
        OEBinaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGraphMol obj1, OEGraphMol obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrGraphMol(OEBinaryGraphMolPred):
    """Logical 'or' of two OEBinary GraphMol Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd GraphMol"""
        OEBinaryGraphMolPred.__init__(self)
        if not isinstance(func1, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGraphMolPred):
            raise TypeError("Expected a OEBinary GraphMol Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGraphMol obj1, OEGraphMol obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryGroupBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEChem::OEGroupBase,bool)> 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__ = _oechem.delete_OEUnaryGroupBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEGroupBase') -> "bool":
        """__call__(OEUnaryGroupBoolFunc self, OEGroupBase arg0) -> bool"""
        return _oechem.OEUnaryGroupBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEChem::OEGroupBase,bool)> self) -> OEUnaryGroupBoolFunc"""
        if self.__class__ == OEUnaryGroupBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGroupBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGroupBoolFunc(self)
        return weakref_proxy(self)
OEUnaryGroupBoolFunc_swigregister = _oechem.OEUnaryGroupBoolFunc_swigregister
OEUnaryGroupBoolFunc_swigregister(OEUnaryGroupBoolFunc)

class OEUnaryGroupPred(OEUnaryGroupBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEChem::OEGroupBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEChem::OEGroupBase)> self) -> OEUnaryGroupPred"""
        if self.__class__ == OEUnaryGroupPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryGroupPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryGroupPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEGroupBase') -> "bool":
        """__call__(OEUnaryGroupPred self, OEGroupBase a) -> bool"""
        return _oechem.OEUnaryGroupPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEGroupBase > *":
        """CreatePredicateCopy(OEUnaryGroupPred self) -> OEUnaryGroupPred"""
        return _oechem.OEUnaryGroupPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryGroupPred(self)
        return weakref_proxy(self)
OEUnaryGroupPred_swigregister = _oechem.OEUnaryGroupPred_swigregister
OEUnaryGroupPred_swigregister(OEUnaryGroupPred)

class OEBinaryGroupFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEChem::OEGroupBase,OEChem::OEGroupBase,bool)> 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__ = _oechem.delete_OEBinaryGroupFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEGroupBase', a2: 'OEGroupBase') -> "bool":
        """__call__(OEBinaryGroupFunc self, OEGroupBase a1, OEGroupBase a2) -> bool"""
        return _oechem.OEBinaryGroupFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEChem::OEGroupBase,OEChem::OEGroupBase,bool)> self) -> OEBinaryGroupFunc"""
        if self.__class__ == OEBinaryGroupFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGroupFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGroupFunc(self)
        return weakref_proxy(self)
OEBinaryGroupFunc_swigregister = _oechem.OEBinaryGroupFunc_swigregister
OEBinaryGroupFunc_swigregister(OEBinaryGroupFunc)

class OEBinaryGroupPred(OEBinaryGroupFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEChem::OEGroupBase,OEChem::OEGroupBase)> class."""

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

    def __call__(self, a1: 'OEGroupBase', a2: 'OEGroupBase') -> "bool":
        """__call__(OEBinaryGroupPred self, OEGroupBase a1, OEGroupBase a2) -> bool"""
        return _oechem.OEBinaryGroupPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEChem::OEGroupBase,OEChem::OEGroupBase > *":
        """CreatePredicateCopy(OEBinaryGroupPred self) -> OEBinaryGroupPred"""
        return _oechem.OEBinaryGroupPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEChem::OEGroupBase,OEChem::OEGroupBase)> self) -> OEBinaryGroupPred"""
        if self.__class__ == OEBinaryGroupPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryGroupPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryGroupPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryGroupPred(self)
        return weakref_proxy(self)
OEBinaryGroupPred_swigregister = _oechem.OEBinaryGroupPred_swigregister
OEBinaryGroupPred_swigregister(OEBinaryGroupPred)


class OENotGroup(OEUnaryGroupPred):
    """Negation of an OEUnary Group Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary Group Pred func) -> OENotNAME"""
        OEUnaryGroupPred.__init__(self)
        if not isinstance(func, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEGroupBase obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndGroup(OEUnaryGroupPred):
    """Logical 'and' of two OEUnary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary Group Pred func1, OEUnary Group Pred func2) -> OEAnd Group"""
        OEUnaryGroupPred.__init__(self)
        if not isinstance(func1, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGroupBase obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrGroup(OEUnaryGroupPred):
    """Logical 'or' of two OEUnary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Group"""
        OEUnaryGroupPred.__init__(self)
        if not isinstance(func1, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryGroupPred):
            raise TypeError("Expected a OEUnary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEGroupBase obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotGroup(OEBinaryGroupPred):
    """Negation of an OEBinary Group Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary Group Pred func) -> OENot Group"""
        OEBinaryGroupPred.__init__(self)
        if not isinstance(func, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEGroupBase obj1, OEGroupBase obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndGroup(OEBinaryGroupPred):
    """Logical 'and' of two OEBinary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Group"""
        OEBinaryGroupPred.__init__(self)
        if not isinstance(func1, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGroupBase obj1, OEGroupBase obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrGroup(OEBinaryGroupPred):
    """Logical 'or' of two OEBinary Group Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd Group"""
        OEBinaryGroupPred.__init__(self)
        if not isinstance(func1, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryGroupPred):
            raise TypeError("Expected a OEBinary Group Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEGroupBase obj1, OEGroupBase obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEUnaryFuncBondAtom(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(p.OEChem::OEBondBase,p.OEChem::OEAtomBase)> 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__ = _oechem.delete_OEUnaryFuncBondAtom
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEBondBase') -> "OEChem::OEAtomBase *":
        """__call__(OEUnaryFuncBondAtom self, OEBondBase arg0) -> OEAtomBase"""
        return _oechem.OEUnaryFuncBondAtom___call__(self, arg0)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase *,OEChem::OEAtomBase * >::base_type *":
        """CreateCopy(OEUnaryFuncBondAtom self) -> OEUnaryFuncBondAtom"""
        return _oechem.OEUnaryFuncBondAtom_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(p.OEChem::OEBondBase,p.OEChem::OEAtomBase)> self) -> OEUnaryFuncBondAtom"""
        if self.__class__ == OEUnaryFuncBondAtom:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryFuncBondAtom(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryFuncBondAtom(self)
        return weakref_proxy(self)
OEUnaryFuncBondAtom_swigregister = _oechem.OEUnaryFuncBondAtom_swigregister
OEUnaryFuncBondAtom_swigregister(OEUnaryFuncBondAtom)

class OEHasAtomName(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAtomName 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, name: 'char const *'):
        """__init__(OEChem::OEHasAtomName self, char const * name) -> OEHasAtomName"""
        this = _oechem.new_OEHasAtomName(name)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomName self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAtomName___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasAtomName
    __del__ = lambda self: None
OEHasAtomName_swigregister = _oechem.OEHasAtomName_swigregister
OEHasAtomName_swigregister(OEHasAtomName)

class OEHasChainID(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasChainID 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, id: 'char const'):
        """__init__(OEChem::OEHasChainID self, char const id) -> OEHasChainID"""
        this = _oechem.new_OEHasChainID(id)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasChainID self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasChainID___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasChainID
    __del__ = lambda self: None
OEHasChainID_swigregister = _oechem.OEHasChainID_swigregister
OEHasChainID_swigregister(OEHasChainID)

class OEHasResidueNumber(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasResidueNumber 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, num: 'int'):
        """__init__(OEChem::OEHasResidueNumber self, int num) -> OEHasResidueNumber"""
        this = _oechem.new_OEHasResidueNumber(num)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasResidueNumber self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasResidueNumber___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasResidueNumber
    __del__ = lambda self: None
OEHasResidueNumber_swigregister = _oechem.OEHasResidueNumber_swigregister
OEHasResidueNumber_swigregister(OEHasResidueNumber)

class OEHasFragmentNumber(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasFragmentNumber 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, num: 'unsigned int'):
        """__init__(OEChem::OEHasFragmentNumber self, unsigned int num) -> OEHasFragmentNumber"""
        this = _oechem.new_OEHasFragmentNumber(num)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasFragmentNumber self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasFragmentNumber___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasFragmentNumber
    __del__ = lambda self: None
OEHasFragmentNumber_swigregister = _oechem.OEHasFragmentNumber_swigregister
OEHasFragmentNumber_swigregister(OEHasFragmentNumber)

class OEHasMapIdx(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasMapIdx 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, idx: 'unsigned int'=0):
        """
        __init__(OEChem::OEHasMapIdx self, unsigned int idx=0) -> OEHasMapIdx
        __init__(OEChem::OEHasMapIdx self) -> OEHasMapIdx
        """
        this = _oechem.new_OEHasMapIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasMapIdx self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasMapIdx___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasMapIdx
    __del__ = lambda self: None
OEHasMapIdx_swigregister = _oechem.OEHasMapIdx_swigregister
OEHasMapIdx_swigregister(OEHasMapIdx)

class OEHasAtomicNum(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAtomicNum 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, an: 'unsigned int'):
        """__init__(OEChem::OEHasAtomicNum self, unsigned int an) -> OEHasAtomicNum"""
        this = _oechem.new_OEHasAtomicNum(an)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomicNum self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAtomicNum___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasAtomicNum
    __del__ = lambda self: None
OEHasAtomicNum_swigregister = _oechem.OEHasAtomicNum_swigregister
OEHasAtomicNum_swigregister(OEHasAtomicNum)

class OEHasHvyDegree(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasHvyDegree 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, h: 'unsigned int'):
        """__init__(OEChem::OEHasHvyDegree self, unsigned int h) -> OEHasHvyDegree"""
        this = _oechem.new_OEHasHvyDegree(h)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasHvyDegree self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasHvyDegree___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasHvyDegree
    __del__ = lambda self: None
OEHasHvyDegree_swigregister = _oechem.OEHasHvyDegree_swigregister
OEHasHvyDegree_swigregister(OEHasHvyDegree)

class OEHasFormalCharge(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasFormalCharge 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, c: 'int'):
        """__init__(OEChem::OEHasFormalCharge self, int c) -> OEHasFormalCharge"""
        this = _oechem.new_OEHasFormalCharge(c)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasFormalCharge self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasFormalCharge___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasFormalCharge
    __del__ = lambda self: None
OEHasFormalCharge_swigregister = _oechem.OEHasFormalCharge_swigregister
OEHasFormalCharge_swigregister(OEHasFormalCharge)

class OEIsRGroup(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsRGroup 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, idx: 'unsigned int'=0):
        """
        __init__(OEChem::OEIsRGroup self, unsigned int idx=0) -> OEIsRGroup
        __init__(OEChem::OEIsRGroup self) -> OEIsRGroup
        """
        this = _oechem.new_OEIsRGroup(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsRGroup self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsRGroup___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEIsRGroup
    __del__ = lambda self: None
OEIsRGroup_swigregister = _oechem.OEIsRGroup_swigregister
OEIsRGroup_swigregister(OEIsRGroup)

class OENthAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OENthAtom 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, n: 'unsigned int', start: 'unsigned int'=0):
        """
        __init__(OEChem::OENthAtom self, unsigned int n, unsigned int start=0) -> OENthAtom
        __init__(OEChem::OENthAtom self, unsigned int n) -> OENthAtom
        """
        this = _oechem.new_OENthAtom(n, start)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OENthAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OENthAtom___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OENthAtom
    __del__ = lambda self: None
OENthAtom_swigregister = _oechem.OENthAtom_swigregister
OENthAtom_swigregister(OENthAtom)

class OEIsBridgeHead(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsBridgeHead 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__(OEChem::OEIsBridgeHead self, OEMolBase mol) -> OEIsBridgeHead
        __init__(OEChem::OEIsBridgeHead self, OEIsBridgeHead rhs) -> OEIsBridgeHead
        """
        this = _oechem.new_OEIsBridgeHead(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsBridgeHead
    __del__ = lambda self: None

    def __call__(self, *args) -> "bool":
        """
        __call__(OEIsBridgeHead self, OEIsBridgeHead rhs) -> OEIsBridgeHead
        __call__(OEIsBridgeHead self, OEAtomBase atom) -> bool
        """
        return _oechem.OEIsBridgeHead___call__(self, *args)


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


OEIsBridgeHead_swigregister = _oechem.OEIsBridgeHead_swigregister
OEIsBridgeHead_swigregister(OEIsBridgeHead)

class OEIsHydrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHydrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHydrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHydrogen___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsHydrogen self) -> OEIsHydrogen"""
        this = _oechem.new_OEIsHydrogen()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHydrogen
    __del__ = lambda self: None
OEIsHydrogen_swigregister = _oechem.OEIsHydrogen_swigregister
OEIsHydrogen_swigregister(OEIsHydrogen)

class OEIsHeavy(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHeavy class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHeavy self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHeavy___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsHeavy self) -> OEIsHeavy"""
        this = _oechem.new_OEIsHeavy()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHeavy
    __del__ = lambda self: None
OEIsHeavy_swigregister = _oechem.OEIsHeavy_swigregister
OEIsHeavy_swigregister(OEIsHeavy)

class OEIsHetero(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHetero class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHetero self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHetero___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsHetero self) -> OEIsHetero"""
        this = _oechem.new_OEIsHetero()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHetero
    __del__ = lambda self: None
OEIsHetero_swigregister = _oechem.OEIsHetero_swigregister
OEIsHetero_swigregister(OEIsHetero)

class OEIsMetal(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsMetal class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsMetal self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsMetal___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsMetal self) -> OEIsMetal"""
        this = _oechem.new_OEIsMetal()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsMetal
    __del__ = lambda self: None
OEIsMetal_swigregister = _oechem.OEIsMetal_swigregister
OEIsMetal_swigregister(OEIsMetal)

class OEIsPolar(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsPolar class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsPolar self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsPolar___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsPolar self) -> OEIsPolar"""
        this = _oechem.new_OEIsPolar()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsPolar
    __del__ = lambda self: None
OEIsPolar_swigregister = _oechem.OEIsPolar_swigregister
OEIsPolar_swigregister(OEIsPolar)

class OEIsPolarHydrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsPolarHydrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsPolarHydrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsPolarHydrogen___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsPolarHydrogen self) -> OEIsPolarHydrogen"""
        this = _oechem.new_OEIsPolarHydrogen()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsPolarHydrogen
    __del__ = lambda self: None
OEIsPolarHydrogen_swigregister = _oechem.OEIsPolarHydrogen_swigregister
OEIsPolarHydrogen_swigregister(OEIsPolarHydrogen)

class OEIsCarbon(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsCarbon class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsCarbon self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsCarbon___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsCarbon self) -> OEIsCarbon"""
        this = _oechem.new_OEIsCarbon()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCarbon
    __del__ = lambda self: None
OEIsCarbon_swigregister = _oechem.OEIsCarbon_swigregister
OEIsCarbon_swigregister(OEIsCarbon)

class OEIsCAlpha(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsCAlpha class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsCAlpha self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsCAlpha___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsCAlpha self) -> OEIsCAlpha"""
        this = _oechem.new_OEIsCAlpha()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsCAlpha
    __del__ = lambda self: None
OEIsCAlpha_swigregister = _oechem.OEIsCAlpha_swigregister
OEIsCAlpha_swigregister(OEIsCAlpha)

class OEIsNitrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsNitrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNitrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNitrogen___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsNitrogen self) -> OEIsNitrogen"""
        this = _oechem.new_OEIsNitrogen()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNitrogen
    __del__ = lambda self: None
OEIsNitrogen_swigregister = _oechem.OEIsNitrogen_swigregister
OEIsNitrogen_swigregister(OEIsNitrogen)

class OEIsInvertibleNitrogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsInvertibleNitrogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsInvertibleNitrogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsInvertibleNitrogen___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsInvertibleNitrogen self) -> OEIsInvertibleNitrogen"""
        this = _oechem.new_OEIsInvertibleNitrogen()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsInvertibleNitrogen
    __del__ = lambda self: None
OEIsInvertibleNitrogen_swigregister = _oechem.OEIsInvertibleNitrogen_swigregister
OEIsInvertibleNitrogen_swigregister(OEIsInvertibleNitrogen)

class OEIsOxygen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsOxygen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsOxygen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsOxygen___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsOxygen self) -> OEIsOxygen"""
        this = _oechem.new_OEIsOxygen()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsOxygen
    __del__ = lambda self: None
OEIsOxygen_swigregister = _oechem.OEIsOxygen_swigregister
OEIsOxygen_swigregister(OEIsOxygen)

class OEIsHalogen(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHalogen class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHalogen self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHalogen___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsHalogen self) -> OEIsHalogen"""
        this = _oechem.new_OEIsHalogen()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHalogen
    __del__ = lambda self: None
OEIsHalogen_swigregister = _oechem.OEIsHalogen_swigregister
OEIsHalogen_swigregister(OEIsHalogen)

class OEIsSulfur(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsSulfur class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsSulfur self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsSulfur___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsSulfur self) -> OEIsSulfur"""
        this = _oechem.new_OEIsSulfur()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsSulfur
    __del__ = lambda self: None
OEIsSulfur_swigregister = _oechem.OEIsSulfur_swigregister
OEIsSulfur_swigregister(OEIsSulfur)

class OEIsPhosphorus(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsPhosphorus class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsPhosphorus self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsPhosphorus___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsPhosphorus self) -> OEIsPhosphorus"""
        this = _oechem.new_OEIsPhosphorus()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsPhosphorus
    __del__ = lambda self: None
OEIsPhosphorus_swigregister = _oechem.OEIsPhosphorus_swigregister
OEIsPhosphorus_swigregister(OEIsPhosphorus)

class OEIsAromaticAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsAromaticAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsAromaticAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsAromaticAtom___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsAromaticAtom self) -> OEIsAromaticAtom"""
        this = _oechem.new_OEIsAromaticAtom()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsAromaticAtom
    __del__ = lambda self: None
OEIsAromaticAtom_swigregister = _oechem.OEIsAromaticAtom_swigregister
OEIsAromaticAtom_swigregister(OEIsAromaticAtom)

class OEIsHalide(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsHalide class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsHalide self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsHalide___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsHalide self) -> OEIsHalide"""
        this = _oechem.new_OEIsHalide()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHalide
    __del__ = lambda self: None
OEIsHalide_swigregister = _oechem.OEIsHalide_swigregister
OEIsHalide_swigregister(OEIsHalide)

class OEAtomIsInRing(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInRing class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInRing self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInRing___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEAtomIsInRing self) -> OEAtomIsInRing"""
        this = _oechem.new_OEAtomIsInRing()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInRing
    __del__ = lambda self: None
OEAtomIsInRing_swigregister = _oechem.OEAtomIsInRing_swigregister
OEAtomIsInRing_swigregister(OEAtomIsInRing)

class OEAtomIsInChain(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInChain class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInChain self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInChain___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEAtomIsInChain self) -> OEAtomIsInChain"""
        this = _oechem.new_OEAtomIsInChain()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInChain
    __del__ = lambda self: None
OEAtomIsInChain_swigregister = _oechem.OEAtomIsInChain_swigregister
OEAtomIsInChain_swigregister(OEAtomIsInChain)

class OEIsChiralAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsChiralAtom class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsChiralAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsChiralAtom___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsChiralAtom self) -> OEIsChiralAtom"""
        this = _oechem.new_OEIsChiralAtom()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsChiralAtom
    __del__ = lambda self: None
OEIsChiralAtom_swigregister = _oechem.OEIsChiralAtom_swigregister
OEIsChiralAtom_swigregister(OEIsChiralAtom)

class OEHasAtomStereoSpecified(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAtomStereoSpecified class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomStereoSpecified self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAtomStereoSpecified___call__(self, atom)


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



    def __init__(self, *args):
        """
        __init__(OEChem::OEHasAtomStereoSpecified self) -> OEHasAtomStereoSpecified
        __init__(OEChem::OEHasAtomStereoSpecified self, unsigned int v) -> OEHasAtomStereoSpecified
        """
        this = _oechem.new_OEHasAtomStereoSpecified(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasAtomStereoSpecified
    __del__ = lambda self: None
OEHasAtomStereoSpecified_swigregister = _oechem.OEHasAtomStereoSpecified_swigregister
OEHasAtomStereoSpecified_swigregister(OEHasAtomStereoSpecified)

class OEHasAlphaBetaUnsat(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAlphaBetaUnsat 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, includePandS: 'bool'=True):
        """
        __init__(OEChem::OEHasAlphaBetaUnsat self, bool includePandS=True) -> OEHasAlphaBetaUnsat
        __init__(OEChem::OEHasAlphaBetaUnsat self) -> OEHasAlphaBetaUnsat
        """
        this = _oechem.new_OEHasAlphaBetaUnsat(includePandS)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAlphaBetaUnsat self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAlphaBetaUnsat___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasAlphaBetaUnsat
    __del__ = lambda self: None
OEHasAlphaBetaUnsat_swigregister = _oechem.OEHasAlphaBetaUnsat_swigregister
OEHasAlphaBetaUnsat_swigregister(OEHasAlphaBetaUnsat)

class OEAtomIsInResidue(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInResidue 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__(OEChem::OEAtomIsInResidue self, OEResidue r) -> OEAtomIsInResidue
        __init__(OEChem::OEAtomIsInResidue self, OEAtomIsInResidue rhs) -> OEAtomIsInResidue
        """
        this = _oechem.new_OEAtomIsInResidue(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInResidue self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInResidue___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEAtomIsInResidue
    __del__ = lambda self: None
OEAtomIsInResidue_swigregister = _oechem.OEAtomIsInResidue_swigregister
OEAtomIsInResidue_swigregister(OEAtomIsInResidue)

class OEAtomIsInReactant(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInReactant class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInReactant self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInReactant___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEAtomIsInReactant self) -> OEAtomIsInReactant"""
        this = _oechem.new_OEAtomIsInReactant()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInReactant
    __del__ = lambda self: None
OEAtomIsInReactant_swigregister = _oechem.OEAtomIsInReactant_swigregister
OEAtomIsInReactant_swigregister(OEAtomIsInReactant)

class OEAtomIsInAgent(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInAgent class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInAgent self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInAgent___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEAtomIsInAgent self) -> OEAtomIsInAgent"""
        this = _oechem.new_OEAtomIsInAgent()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInAgent
    __del__ = lambda self: None
OEAtomIsInAgent_swigregister = _oechem.OEAtomIsInAgent_swigregister
OEAtomIsInAgent_swigregister(OEAtomIsInAgent)

class OEAtomIsInProduct(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEAtomIsInProduct class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIsInProduct self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomIsInProduct___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEAtomIsInProduct self) -> OEAtomIsInProduct"""
        this = _oechem.new_OEAtomIsInProduct()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIsInProduct
    __del__ = lambda self: None
OEAtomIsInProduct_swigregister = _oechem.OEAtomIsInProduct_swigregister
OEAtomIsInProduct_swigregister(OEAtomIsInProduct)

class OEIsNonRingAtomDoubleBondedToRing(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsNonRingAtomDoubleBondedToRing class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNonRingAtomDoubleBondedToRing self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNonRingAtomDoubleBondedToRing___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEIsNonRingAtomDoubleBondedToRing self) -> OEIsNonRingAtomDoubleBondedToRing"""
        this = _oechem.new_OEIsNonRingAtomDoubleBondedToRing()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNonRingAtomDoubleBondedToRing
    __del__ = lambda self: None
OEIsNonRingAtomDoubleBondedToRing_swigregister = _oechem.OEIsNonRingAtomDoubleBondedToRing_swigregister
OEIsNonRingAtomDoubleBondedToRing_swigregister(OEIsNonRingAtomDoubleBondedToRing)

class OEIsAtomHybridization(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsAtomHybridization 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, h: 'unsigned int'):
        """__init__(OEChem::OEIsAtomHybridization self, unsigned int h) -> OEIsAtomHybridization"""
        this = _oechem.new_OEIsAtomHybridization(h)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsAtomHybridization self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsAtomHybridization___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEIsAtomHybridization
    __del__ = lambda self: None
OEIsAtomHybridization_swigregister = _oechem.OEIsAtomHybridization_swigregister
OEIsAtomHybridization_swigregister(OEIsAtomHybridization)

class OEHasOrder(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEHasOrder 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, o: 'unsigned int'):
        """__init__(OEChem::OEHasOrder self, unsigned int o) -> OEHasOrder"""
        this = _oechem.new_OEHasOrder(o)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEHasOrder self, OEBondBase bond) -> bool"""
        return _oechem.OEHasOrder___call__(self, bond)


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


    __swig_destroy__ = _oechem.delete_OEHasOrder
    __del__ = lambda self: None
OEHasOrder_swigregister = _oechem.OEHasOrder_swigregister
OEHasOrder_swigregister(OEHasOrder)

class OEBondIsInRing(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEBondIsInRing class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEBondIsInRing self, OEBondBase bond) -> bool"""
        return _oechem.OEBondIsInRing___call__(self, bond)


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



    def __init__(self):
        """__init__(OEChem::OEBondIsInRing self) -> OEBondIsInRing"""
        this = _oechem.new_OEBondIsInRing()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBondIsInRing
    __del__ = lambda self: None
OEBondIsInRing_swigregister = _oechem.OEBondIsInRing_swigregister
OEBondIsInRing_swigregister(OEBondIsInRing)

class OEBondIsInChain(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEBondIsInChain class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEBondIsInChain self, OEBondBase bond) -> bool"""
        return _oechem.OEBondIsInChain___call__(self, bond)


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



    def __init__(self):
        """__init__(OEChem::OEBondIsInChain self) -> OEBondIsInChain"""
        this = _oechem.new_OEBondIsInChain()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBondIsInChain
    __del__ = lambda self: None
OEBondIsInChain_swigregister = _oechem.OEBondIsInChain_swigregister
OEBondIsInChain_swigregister(OEBondIsInChain)

class OEIsRotor(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsRotor 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, includeHydrogen: 'bool'=False):
        """
        __init__(OEChem::OEIsRotor self, bool includeHydrogen=False) -> OEIsRotor
        __init__(OEChem::OEIsRotor self) -> OEIsRotor
        """
        this = _oechem.new_OEIsRotor(includeHydrogen)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsRotor self, OEBondBase bond) -> bool"""
        return _oechem.OEIsRotor___call__(self, bond)


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


    __swig_destroy__ = _oechem.delete_OEIsRotor
    __del__ = lambda self: None
OEIsRotor_swigregister = _oechem.OEIsRotor_swigregister
OEIsRotor_swigregister(OEIsRotor)

class OEIsChiralBond(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsChiralBond class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsChiralBond self, OEBondBase bond) -> bool"""
        return _oechem.OEIsChiralBond___call__(self, bond)


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



    def __init__(self):
        """__init__(OEChem::OEIsChiralBond self) -> OEIsChiralBond"""
        this = _oechem.new_OEIsChiralBond()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsChiralBond
    __del__ = lambda self: None
OEIsChiralBond_swigregister = _oechem.OEIsChiralBond_swigregister
OEIsChiralBond_swigregister(OEIsChiralBond)

class OEHasBondStereoSpecified(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEHasBondStereoSpecified class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEHasBondStereoSpecified self, OEBondBase bond) -> bool"""
        return _oechem.OEHasBondStereoSpecified___call__(self, bond)


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



    def __init__(self, *args):
        """
        __init__(OEChem::OEHasBondStereoSpecified self, unsigned int v) -> OEHasBondStereoSpecified
        __init__(OEChem::OEHasBondStereoSpecified self) -> OEHasBondStereoSpecified
        """
        this = _oechem.new_OEHasBondStereoSpecified(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasBondStereoSpecified
    __del__ = lambda self: None
OEHasBondStereoSpecified_swigregister = _oechem.OEHasBondStereoSpecified_swigregister
OEHasBondStereoSpecified_swigregister(OEHasBondStereoSpecified)

class OEIsAromaticBond(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsAromaticBond class."""

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

    def __call__(self, bond: 'OEBondBase') -> "bool":
        """__call__(OEIsAromaticBond self, OEBondBase bond) -> bool"""
        return _oechem.OEIsAromaticBond___call__(self, bond)


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



    def __init__(self):
        """__init__(OEChem::OEIsAromaticBond self) -> OEIsAromaticBond"""
        this = _oechem.new_OEIsAromaticBond()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsAromaticBond
    __del__ = lambda self: None
OEIsAromaticBond_swigregister = _oechem.OEIsAromaticBond_swigregister
OEIsAromaticBond_swigregister(OEIsAromaticBond)

class OEGetNbrAtom(OEUnaryFuncBondAtom):
    """Proxy of C++ OEChem::OEGetNbrAtom 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, atom: 'OEAtomBase'):
        """__init__(OEChem::OEGetNbrAtom self, OEAtomBase atom) -> OEGetNbrAtom"""
        this = _oechem.new_OEGetNbrAtom(atom)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg2: 'OEBondBase') -> "OESystem::OEUnaryFunction< OEChem::OEBondBase *,OEChem::OEAtomBase * >::result_type":
        """__call__(OEGetNbrAtom self, OEBondBase arg2) -> OEAtomBase"""
        return _oechem.OEGetNbrAtom___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase *,OEChem::OEAtomBase *,true,true > *":
        """CreateCopy(OEGetNbrAtom self) -> OEUnaryFuncBondAtom"""
        return _oechem.OEGetNbrAtom_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEGetNbrAtom
    __del__ = lambda self: None
OEGetNbrAtom_swigregister = _oechem.OEGetNbrAtom_swigregister
OEGetNbrAtom_swigregister(OEGetNbrAtom)

class OEInSamePart(OEBinaryAtomPred):
    """Proxy of C++ OEChem::OEInSamePart 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__(OEChem::OEInSamePart self, unsigned int * parts, bool boolval=True) -> OEInSamePart
        __init__(OEChem::OEInSamePart self, unsigned int * parts) -> OEInSamePart
        __init__(OEChem::OEInSamePart self, OEInSamePart rhs) -> OEInSamePart
        """
        this = _oechem.new_OEInSamePart(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInSamePart
    __del__ = lambda self: None

    def __call__(self, a1: 'OEAtomBase', a2: 'OEAtomBase') -> "bool":
        """__call__(OEInSamePart self, OEAtomBase a1, OEAtomBase a2) -> bool"""
        return _oechem.OEInSamePart___call__(self, a1, a2)


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


OEInSamePart_swigregister = _oechem.OEInSamePart_swigregister
OEInSamePart_swigregister(OEInSamePart)


def OERingBondCount(atom: 'OEAtomBase') -> "unsigned int":
    """OERingBondCount(OEAtomBase atom) -> unsigned int"""
    return _oechem.OERingBondCount(atom)
class OEHasGroupType(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEHasGroupType 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, type: 'unsigned int'):
        """__init__(OEChem::OEHasGroupType self, unsigned int type) -> OEHasGroupType"""
        this = _oechem.new_OEHasGroupType(type)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEHasGroupType self, OEGroupBase group) -> bool"""
        return _oechem.OEHasGroupType___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEHasGroupType self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEHasGroupType_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasGroupType
    __del__ = lambda self: None
OEHasGroupType_swigregister = _oechem.OEHasGroupType_swigregister
OEHasGroupType_swigregister(OEHasGroupType)

class OEIsMDLStereoGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsMDLStereoGroup class."""

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

    def __init__(self):
        """__init__(OEChem::OEIsMDLStereoGroup self) -> OEIsMDLStereoGroup"""
        this = _oechem.new_OEIsMDLStereoGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsMDLStereoGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsMDLStereoGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsMDLStereoGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsMDLStereoGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsMDLStereoGroup
    __del__ = lambda self: None
OEIsMDLStereoGroup_swigregister = _oechem.OEIsMDLStereoGroup_swigregister
OEIsMDLStereoGroup_swigregister(OEIsMDLStereoGroup)

class OEIsRxnComponentGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsRxnComponentGroup class."""

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

    def __init__(self):
        """__init__(OEChem::OEIsRxnComponentGroup self) -> OEIsRxnComponentGroup"""
        this = _oechem.new_OEIsRxnComponentGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsRxnComponentGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsRxnComponentGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsRxnComponentGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsRxnComponentGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsRxnComponentGroup
    __del__ = lambda self: None
OEIsRxnComponentGroup_swigregister = _oechem.OEIsRxnComponentGroup_swigregister
OEIsRxnComponentGroup_swigregister(OEIsRxnComponentGroup)

class OEIsReactantGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsReactantGroup class."""

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

    def __init__(self):
        """__init__(OEChem::OEIsReactantGroup self) -> OEIsReactantGroup"""
        this = _oechem.new_OEIsReactantGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsReactantGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsReactantGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsReactantGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsReactantGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsReactantGroup
    __del__ = lambda self: None
OEIsReactantGroup_swigregister = _oechem.OEIsReactantGroup_swigregister
OEIsReactantGroup_swigregister(OEIsReactantGroup)

class OEIsProductGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEIsProductGroup class."""

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

    def __init__(self):
        """__init__(OEChem::OEIsProductGroup self) -> OEIsProductGroup"""
        this = _oechem.new_OEIsProductGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEIsProductGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEIsProductGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEIsProductGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEIsProductGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsProductGroup
    __del__ = lambda self: None
OEIsProductGroup_swigregister = _oechem.OEIsProductGroup_swigregister
OEIsProductGroup_swigregister(OEIsProductGroup)

class OEHasAtomInGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEHasAtomInGroup 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, atom: 'OEAtomBase'):
        """__init__(OEChem::OEHasAtomInGroup self, OEAtomBase atom) -> OEHasAtomInGroup"""
        this = _oechem.new_OEHasAtomInGroup(atom)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEHasAtomInGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEHasAtomInGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEHasAtomInGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEHasAtomInGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasAtomInGroup
    __del__ = lambda self: None
OEHasAtomInGroup_swigregister = _oechem.OEHasAtomInGroup_swigregister
OEHasAtomInGroup_swigregister(OEHasAtomInGroup)

class OEHasBondInGroup(OEUnaryGroupPred):
    """Proxy of C++ OEChem::OEHasBondInGroup 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, bond: 'OEBondBase'):
        """__init__(OEChem::OEHasBondInGroup self, OEBondBase bond) -> OEHasBondInGroup"""
        this = _oechem.new_OEHasBondInGroup(bond)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, group: 'OEGroupBase') -> "bool":
        """__call__(OEHasBondInGroup self, OEGroupBase group) -> bool"""
        return _oechem.OEHasBondInGroup___call__(self, group)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool,true,true > *":
        """CreateCopy(OEHasBondInGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.OEHasBondInGroup_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasBondInGroup
    __del__ = lambda self: None
OEHasBondInGroup_swigregister = _oechem.OEHasBondInGroup_swigregister
OEHasBondInGroup_swigregister(OEHasBondInGroup)

class HasAtomIdx(OEUnaryAtomPred):
    """Proxy of C++ OEChem::HasIdx<(OEChem::OEAtomBase)> class."""

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

    def __init__(self, idx: 'unsigned int'):
        """__init__(OEChem::HasIdx<(OEChem::OEAtomBase)> self, unsigned int idx) -> HasAtomIdx"""
        this = _oechem.new_HasAtomIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(HasAtomIdx self, OEAtomBase arg) -> bool"""
        return _oechem.HasAtomIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(HasAtomIdx self) -> OEUnaryAtomBoolFunc"""
        return _oechem.HasAtomIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_HasAtomIdx
    __del__ = lambda self: None
HasAtomIdx_swigregister = _oechem.HasAtomIdx_swigregister
HasAtomIdx_swigregister(HasAtomIdx)

class HasBondIdx(OEUnaryBondPred):
    """Proxy of C++ OEChem::HasIdx<(OEChem::OEBondBase)> class."""

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

    def __init__(self, idx: 'unsigned int'):
        """__init__(OEChem::HasIdx<(OEChem::OEBondBase)> self, unsigned int idx) -> HasBondIdx"""
        this = _oechem.new_HasBondIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEBondBase') -> "bool":
        """__call__(HasBondIdx self, OEBondBase arg) -> bool"""
        return _oechem.HasBondIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool,true,true > *":
        """CreateCopy(HasBondIdx self) -> OEUnaryBondBoolFunc"""
        return _oechem.HasBondIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_HasBondIdx
    __del__ = lambda self: None
HasBondIdx_swigregister = _oechem.HasBondIdx_swigregister
HasBondIdx_swigregister(HasBondIdx)

class HasConfIdx(OEUnaryConfPred):
    """Proxy of C++ OEChem::HasIdx<(OEChem::OEConfBase)> class."""

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

    def __init__(self, idx: 'unsigned int'):
        """__init__(OEChem::HasIdx<(OEChem::OEConfBase)> self, unsigned int idx) -> HasConfIdx"""
        this = _oechem.new_HasConfIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEConfBase') -> "bool":
        """__call__(HasConfIdx self, OEConfBase arg) -> bool"""
        return _oechem.HasConfIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool,true,true > *":
        """CreateCopy(HasConfIdx self) -> OEUnaryConfBoolFunc"""
        return _oechem.HasConfIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_HasConfIdx
    __del__ = lambda self: None
HasConfIdx_swigregister = _oechem.HasConfIdx_swigregister
HasConfIdx_swigregister(HasConfIdx)

class OEHasAtomIdx(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasIdx<(OEChem::OEAtomBase)> 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, idx: 'unsigned int'):
        """__init__(OEChem::OEHasIdx<(OEChem::OEAtomBase)> self, unsigned int idx) -> OEHasAtomIdx"""
        this = _oechem.new_OEHasAtomIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(OEHasAtomIdx self, OEAtomBase arg) -> bool"""
        return _oechem.OEHasAtomIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(OEHasAtomIdx self) -> OEUnaryAtomBoolFunc"""
        return _oechem.OEHasAtomIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasAtomIdx
    __del__ = lambda self: None
OEHasAtomIdx_swigregister = _oechem.OEHasAtomIdx_swigregister
OEHasAtomIdx_swigregister(OEHasAtomIdx)

class OEHasBondIdx(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEHasIdx<(OEChem::OEBondBase)> 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, idx: 'unsigned int'):
        """__init__(OEChem::OEHasIdx<(OEChem::OEBondBase)> self, unsigned int idx) -> OEHasBondIdx"""
        this = _oechem.new_OEHasBondIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEBondBase') -> "bool":
        """__call__(OEHasBondIdx self, OEBondBase arg) -> bool"""
        return _oechem.OEHasBondIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool,true,true > *":
        """CreateCopy(OEHasBondIdx self) -> OEUnaryBondBoolFunc"""
        return _oechem.OEHasBondIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasBondIdx
    __del__ = lambda self: None
OEHasBondIdx_swigregister = _oechem.OEHasBondIdx_swigregister
OEHasBondIdx_swigregister(OEHasBondIdx)

class OEHasConfIdx(OEUnaryConfPred):
    """Proxy of C++ OEChem::OEHasIdx<(OEChem::OEConfBase)> 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, idx: 'unsigned int'):
        """__init__(OEChem::OEHasIdx<(OEChem::OEConfBase)> self, unsigned int idx) -> OEHasConfIdx"""
        this = _oechem.new_OEHasConfIdx(idx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEConfBase') -> "bool":
        """__call__(OEHasConfIdx self, OEConfBase arg) -> bool"""
        return _oechem.OEHasConfIdx___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool,true,true > *":
        """CreateCopy(OEHasConfIdx self) -> OEUnaryConfBoolFunc"""
        return _oechem.OEHasConfIdx_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasConfIdx
    __del__ = lambda self: None
OEHasConfIdx_swigregister = _oechem.OEHasConfIdx_swigregister
OEHasConfIdx_swigregister(OEHasConfIdx)

class OEAtomIdxSelected(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIdxSelected<(OEChem::OEAtomBase)> 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, bv: 'OEBitVector'):
        """__init__(OEChem::OEIdxSelected<(OEChem::OEAtomBase)> self, OEBitVector bv) -> OEAtomIdxSelected"""
        this = _oechem.new_OEAtomIdxSelected(bv)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, a: 'OEAtomBase') -> "bool":
        """__call__(OEAtomIdxSelected self, OEAtomBase a) -> bool"""
        return _oechem.OEAtomIdxSelected___call__(self, a)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(OEAtomIdxSelected self) -> OEUnaryAtomBoolFunc"""
        return _oechem.OEAtomIdxSelected_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEAtomIdxSelected
    __del__ = lambda self: None
OEAtomIdxSelected_swigregister = _oechem.OEAtomIdxSelected_swigregister
OEAtomIdxSelected_swigregister(OEAtomIdxSelected)

class OEBondIdxSelected(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIdxSelected<(OEChem::OEBondBase)> 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, bv: 'OEBitVector'):
        """__init__(OEChem::OEIdxSelected<(OEChem::OEBondBase)> self, OEBitVector bv) -> OEBondIdxSelected"""
        this = _oechem.new_OEBondIdxSelected(bv)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, a: 'OEBondBase') -> "bool":
        """__call__(OEBondIdxSelected self, OEBondBase a) -> bool"""
        return _oechem.OEBondIdxSelected___call__(self, a)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool,true,true > *":
        """CreateCopy(OEBondIdxSelected self) -> OEUnaryBondBoolFunc"""
        return _oechem.OEBondIdxSelected_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEBondIdxSelected
    __del__ = lambda self: None
OEBondIdxSelected_swigregister = _oechem.OEBondIdxSelected_swigregister
OEBondIdxSelected_swigregister(OEBondIdxSelected)

class OEConfIdxSelected(OEUnaryConfPred):
    """Proxy of C++ OEChem::OEIdxSelected<(OEChem::OEConfBase)> 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, bv: 'OEBitVector'):
        """__init__(OEChem::OEIdxSelected<(OEChem::OEConfBase)> self, OEBitVector bv) -> OEConfIdxSelected"""
        this = _oechem.new_OEConfIdxSelected(bv)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, a: 'OEConfBase') -> "bool":
        """__call__(OEConfIdxSelected self, OEConfBase a) -> bool"""
        return _oechem.OEConfIdxSelected___call__(self, a)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool,true,true > *":
        """CreateCopy(OEConfIdxSelected self) -> OEUnaryConfBoolFunc"""
        return _oechem.OEConfIdxSelected_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEConfIdxSelected
    __del__ = lambda self: None
OEConfIdxSelected_swigregister = _oechem.OEConfIdxSelected_swigregister
OEConfIdxSelected_swigregister(OEConfIdxSelected)

class OEMatchAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEMatchFunc<(OEChem::OEAtomBase)> 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__(OEChem::OEMatchFunc<(OEChem::OEAtomBase)> self, char const * smarts) -> OEMatchAtom
        __init__(OEChem::OEMatchFunc<(OEChem::OEAtomBase)> self, OEQMolBase qm) -> OEMatchAtom
        __init__(OEChem::OEMatchFunc<(OEChem::OEAtomBase)> self, OEMolBase mol, unsigned int atomMap, unsigned int bondMap) -> OEMatchAtom
        """
        this = _oechem.new_OEMatchAtom(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEMatchAtom___nonzero__(self)



    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(OEMatchAtom self, OEAtomBase arg) -> bool"""
        return _oechem.OEMatchAtom___call__(self, arg)


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


    __swig_destroy__ = _oechem.delete_OEMatchAtom
    __del__ = lambda self: None
OEMatchAtom_swigregister = _oechem.OEMatchAtom_swigregister
OEMatchAtom_swigregister(OEMatchAtom)

class OEMatchMolBase(OEUnaryMolBasePred):
    """Proxy of C++ OEChem::OEMatchFunc<(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__(OEChem::OEMatchFunc<(OEChem::OEMolBase)> self, char const * smarts) -> OEMatchMolBase
        __init__(OEChem::OEMatchFunc<(OEChem::OEMolBase)> self, OEQMolBase qm) -> OEMatchMolBase
        __init__(OEChem::OEMatchFunc<(OEChem::OEMolBase)> self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> OEMatchMolBase
        """
        this = _oechem.new_OEMatchMolBase(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEMatchMolBase___nonzero__(self)



    def __call__(self, arg: 'OEMolBase') -> "bool":
        """__call__(OEMatchMolBase self, OEMolBase arg) -> bool"""
        return _oechem.OEMatchMolBase___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEMolBase,bool,true,true > *":
        """CreateCopy(OEMatchMolBase self) -> OEUnaryMolBaseBoolFunc"""
        return _oechem.OEMatchMolBase_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMatchMolBase
    __del__ = lambda self: None
OEMatchMolBase_swigregister = _oechem.OEMatchMolBase_swigregister
OEMatchMolBase_swigregister(OEMatchMolBase)

class OEMatchGraphMol(OEUnaryGraphMolPred):
    """Proxy of C++ OEChem::OEMatchFunc<(OEGraphMolWrapper)> 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__(OEChem::OEMatchFunc<(OEGraphMolWrapper)> self, char const * smarts) -> OEMatchGraphMol
        __init__(OEChem::OEMatchFunc<(OEGraphMolWrapper)> self, OEQMolBase qm) -> OEMatchGraphMol
        __init__(OEChem::OEMatchFunc<(OEGraphMolWrapper)> self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> OEMatchGraphMol
        """
        this = _oechem.new_OEMatchGraphMol(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEMatchGraphMol___nonzero__(self)



    def __call__(self, arg: 'OEGraphMol') -> "bool":
        """__call__(OEMatchGraphMol self, OEGraphMol arg) -> bool"""
        return _oechem.OEMatchGraphMol___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEGraphMolWrapper,bool,true,true > *":
        """CreateCopy(OEMatchGraphMol self) -> OEUnaryGraphMolBoolFunc"""
        return _oechem.OEMatchGraphMol_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMatchGraphMol
    __del__ = lambda self: None
OEMatchGraphMol_swigregister = _oechem.OEMatchGraphMol_swigregister
OEMatchGraphMol_swigregister(OEMatchGraphMol)

class IsTrueAtom(OEUnaryAtomPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEAtomBase)> class."""

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

    def __call__(self, arg2: 'OEAtomBase') -> "bool":
        """__call__(IsTrueAtom self, OEAtomBase arg2) -> bool"""
        return _oechem.IsTrueAtom___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool > *":
        """CreateCopy(IsTrueAtom self) -> OEUnaryAtomBoolFunc"""
        return _oechem.IsTrueAtom_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEAtomBase)> self) -> IsTrueAtom"""
        this = _oechem.new_IsTrueAtom()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueAtom
    __del__ = lambda self: None
IsTrueAtom_swigregister = _oechem.IsTrueAtom_swigregister
IsTrueAtom_swigregister(IsTrueAtom)

class IsFalseAtom(OEUnaryAtomPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEAtomBase)> class."""

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

    def __call__(self, arg2: 'OEAtomBase') -> "bool":
        """__call__(IsFalseAtom self, OEAtomBase arg2) -> bool"""
        return _oechem.IsFalseAtom___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool > *":
        """CreateCopy(IsFalseAtom self) -> OEUnaryAtomBoolFunc"""
        return _oechem.IsFalseAtom_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEAtomBase)> self) -> IsFalseAtom"""
        this = _oechem.new_IsFalseAtom()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseAtom
    __del__ = lambda self: None
IsFalseAtom_swigregister = _oechem.IsFalseAtom_swigregister
IsFalseAtom_swigregister(IsFalseAtom)

class IsTrueBond(OEUnaryBondPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEBondBase)> class."""

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

    def __call__(self, arg2: 'OEBondBase') -> "bool":
        """__call__(IsTrueBond self, OEBondBase arg2) -> bool"""
        return _oechem.IsTrueBond___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool > *":
        """CreateCopy(IsTrueBond self) -> OEUnaryBondBoolFunc"""
        return _oechem.IsTrueBond_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEBondBase)> self) -> IsTrueBond"""
        this = _oechem.new_IsTrueBond()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueBond
    __del__ = lambda self: None
IsTrueBond_swigregister = _oechem.IsTrueBond_swigregister
IsTrueBond_swigregister(IsTrueBond)

class IsFalseBond(OEUnaryBondPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEBondBase)> class."""

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

    def __call__(self, arg2: 'OEBondBase') -> "bool":
        """__call__(IsFalseBond self, OEBondBase arg2) -> bool"""
        return _oechem.IsFalseBond___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEBondBase,bool > *":
        """CreateCopy(IsFalseBond self) -> OEUnaryBondBoolFunc"""
        return _oechem.IsFalseBond_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEBondBase)> self) -> IsFalseBond"""
        this = _oechem.new_IsFalseBond()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseBond
    __del__ = lambda self: None
IsFalseBond_swigregister = _oechem.IsFalseBond_swigregister
IsFalseBond_swigregister(IsFalseBond)

class IsTrueConf(OEUnaryConfPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEConfBase)> class."""

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

    def __call__(self, arg2: 'OEConfBase') -> "bool":
        """__call__(IsTrueConf self, OEConfBase arg2) -> bool"""
        return _oechem.IsTrueConf___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool > *":
        """CreateCopy(IsTrueConf self) -> OEUnaryConfBoolFunc"""
        return _oechem.IsTrueConf_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEConfBase)> self) -> IsTrueConf"""
        this = _oechem.new_IsTrueConf()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueConf
    __del__ = lambda self: None
IsTrueConf_swigregister = _oechem.IsTrueConf_swigregister
IsTrueConf_swigregister(IsTrueConf)

class IsFalseConf(OEUnaryConfPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEConfBase)> class."""

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

    def __call__(self, arg2: 'OEConfBase') -> "bool":
        """__call__(IsFalseConf self, OEConfBase arg2) -> bool"""
        return _oechem.IsFalseConf___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEConfBase,bool > *":
        """CreateCopy(IsFalseConf self) -> OEUnaryConfBoolFunc"""
        return _oechem.IsFalseConf_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEConfBase)> self) -> IsFalseConf"""
        this = _oechem.new_IsFalseConf()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseConf
    __del__ = lambda self: None
IsFalseConf_swigregister = _oechem.IsFalseConf_swigregister
IsFalseConf_swigregister(IsFalseConf)

class IsTrueGroup(OEUnaryGroupPred):
    """Proxy of C++ OESystem::OEIsTrue<(OEChem::OEGroupBase)> class."""

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

    def __call__(self, arg2: 'OEGroupBase') -> "bool":
        """__call__(IsTrueGroup self, OEGroupBase arg2) -> bool"""
        return _oechem.IsTrueGroup___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool > *":
        """CreateCopy(IsTrueGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.IsTrueGroup_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OEChem::OEGroupBase)> self) -> IsTrueGroup"""
        this = _oechem.new_IsTrueGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsTrueGroup
    __del__ = lambda self: None
IsTrueGroup_swigregister = _oechem.IsTrueGroup_swigregister
IsTrueGroup_swigregister(IsTrueGroup)

class IsFalseGroup(OEUnaryGroupPred):
    """Proxy of C++ OESystem::OEIsFalse<(OEChem::OEGroupBase)> class."""

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

    def __call__(self, arg2: 'OEGroupBase') -> "bool":
        """__call__(IsFalseGroup self, OEGroupBase arg2) -> bool"""
        return _oechem.IsFalseGroup___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEGroupBase,bool > *":
        """CreateCopy(IsFalseGroup self) -> OEUnaryGroupBoolFunc"""
        return _oechem.IsFalseGroup_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OEChem::OEGroupBase)> self) -> IsFalseGroup"""
        this = _oechem.new_IsFalseGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_IsFalseGroup
    __del__ = lambda self: None
IsFalseGroup_swigregister = _oechem.IsFalseGroup_swigregister
IsFalseGroup_swigregister(IsFalseGroup)

class OEIsTrueAtom(IsTrueAtom):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEAtomBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryTrue<(OEChem::OEAtomBase)> self) -> OEIsTrueAtom"""
        this = _oechem.new_OEIsTrueAtom()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueAtom
    __del__ = lambda self: None
OEIsTrueAtom_swigregister = _oechem.OEIsTrueAtom_swigregister
OEIsTrueAtom_swigregister(OEIsTrueAtom)

class OEIsFalseAtom(IsFalseAtom):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEAtomBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryFalse<(OEChem::OEAtomBase)> self) -> OEIsFalseAtom"""
        this = _oechem.new_OEIsFalseAtom()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseAtom
    __del__ = lambda self: None
OEIsFalseAtom_swigregister = _oechem.OEIsFalseAtom_swigregister
OEIsFalseAtom_swigregister(OEIsFalseAtom)

class OEIsTrueBond(IsTrueBond):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEBondBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryTrue<(OEChem::OEBondBase)> self) -> OEIsTrueBond"""
        this = _oechem.new_OEIsTrueBond()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueBond
    __del__ = lambda self: None
OEIsTrueBond_swigregister = _oechem.OEIsTrueBond_swigregister
OEIsTrueBond_swigregister(OEIsTrueBond)

class OEIsFalseBond(IsFalseBond):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEBondBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryFalse<(OEChem::OEBondBase)> self) -> OEIsFalseBond"""
        this = _oechem.new_OEIsFalseBond()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseBond
    __del__ = lambda self: None
OEIsFalseBond_swigregister = _oechem.OEIsFalseBond_swigregister
OEIsFalseBond_swigregister(OEIsFalseBond)

class OEIsTrueConf(IsTrueConf):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEConfBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryTrue<(OEChem::OEConfBase)> self) -> OEIsTrueConf"""
        this = _oechem.new_OEIsTrueConf()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueConf
    __del__ = lambda self: None
OEIsTrueConf_swigregister = _oechem.OEIsTrueConf_swigregister
OEIsTrueConf_swigregister(OEIsTrueConf)

class OEIsFalseConf(IsFalseConf):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEConfBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryFalse<(OEChem::OEConfBase)> self) -> OEIsFalseConf"""
        this = _oechem.new_OEIsFalseConf()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseConf
    __del__ = lambda self: None
OEIsFalseConf_swigregister = _oechem.OEIsFalseConf_swigregister
OEIsFalseConf_swigregister(OEIsFalseConf)

class OEIsTrueGroup(IsTrueGroup):
    """Proxy of C++ OESystem::OEUnaryTrue<(OEChem::OEGroupBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryTrue<(OEChem::OEGroupBase)> self) -> OEIsTrueGroup"""
        this = _oechem.new_OEIsTrueGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueGroup
    __del__ = lambda self: None
OEIsTrueGroup_swigregister = _oechem.OEIsTrueGroup_swigregister
OEIsTrueGroup_swigregister(OEIsTrueGroup)

class OEIsFalseGroup(IsFalseGroup):
    """Proxy of C++ OESystem::OEUnaryFalse<(OEChem::OEGroupBase)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryFalse<(OEChem::OEGroupBase)> self) -> OEIsFalseGroup"""
        this = _oechem.new_OEIsFalseGroup()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseGroup
    __del__ = lambda self: None
OEIsFalseGroup_swigregister = _oechem.OEIsFalseGroup_swigregister
OEIsFalseGroup_swigregister(OEIsFalseGroup)

class OEPartPredAtom(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEPartPredT<(OEChem::OEAtomBase)> 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__(OEChem::OEPartPredT<(OEChem::OEAtomBase)> self, unsigned int * parts) -> OEPartPredAtom
        __init__(OEChem::OEPartPredT<(OEChem::OEAtomBase)> self, OEPartPredAtom rhs) -> OEPartPredAtom
        """
        this = _oechem.new_OEPartPredAtom(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPartPredAtom
    __del__ = lambda self: None

    def SelectPart(self, part: 'unsigned int') -> "void":
        """SelectPart(OEPartPredAtom self, unsigned int part)"""
        return _oechem.OEPartPredAtom_SelectPart(self, part)


    def __call__(self, t: 'OEAtomBase') -> "bool":
        """__call__(OEPartPredAtom self, OEAtomBase t) -> bool"""
        return _oechem.OEPartPredAtom___call__(self, t)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEChem::OEAtomBase,bool,true,true > *":
        """CreateCopy(OEPartPredAtom self) -> OEUnaryAtomBoolFunc"""
        return _oechem.OEPartPredAtom_CreateCopy(self)

OEPartPredAtom_swigregister = _oechem.OEPartPredAtom_swigregister
OEPartPredAtom_swigregister(OEPartPredAtom)

class OEIsAtomMember(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> 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__(OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> self) -> OEIsAtomMember
        __init__(OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> self, OEAtomIter i) -> OEIsAtomMember
        __init__(OEChem::OEIsMemberPtr<(OEChem::OEAtomBase)> self, OESystem::OEIterBase< OEChem::OEAtomBase > * ib) -> OEIsAtomMember
        """
        this = _oechem.new_OEIsAtomMember(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEAtomBase') -> "bool":
        """__call__(OEIsAtomMember self, OEAtomBase arg) -> bool"""
        return _oechem.OEIsAtomMember___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """CreateCopy(OEIsAtomMember self) -> OEUnaryAtomPred"""
        return _oechem.OEIsAtomMember_CreateCopy(self)


    def Add(self, item: 'OEAtomBase') -> "bool":
        """Add(OEIsAtomMember self, OEAtomBase item) -> bool"""
        return _oechem.OEIsAtomMember_Add(self, item)

    __swig_destroy__ = _oechem.delete_OEIsAtomMember
    __del__ = lambda self: None
OEIsAtomMember_swigregister = _oechem.OEIsAtomMember_swigregister
OEIsAtomMember_swigregister(OEIsAtomMember)

class OEIsBondMember(OEUnaryBondPred):
    """Proxy of C++ OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> 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__(OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> self) -> OEIsBondMember
        __init__(OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> self, OEBondIter i) -> OEIsBondMember
        __init__(OEChem::OEIsMemberPtr<(OEChem::OEBondBase)> self, OESystem::OEIterBase< OEChem::OEBondBase > * ib) -> OEIsBondMember
        """
        this = _oechem.new_OEIsBondMember(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg: 'OEBondBase') -> "bool":
        """__call__(OEIsBondMember self, OEBondBase arg) -> bool"""
        return _oechem.OEIsBondMember___call__(self, arg)


    def CreateCopy(self) -> "OESystem::OEUnaryPredicate< OEChem::OEBondBase > *":
        """CreateCopy(OEIsBondMember self) -> OEUnaryBondPred"""
        return _oechem.OEIsBondMember_CreateCopy(self)


    def Add(self, item: 'OEBondBase') -> "bool":
        """Add(OEIsBondMember self, OEBondBase item) -> bool"""
        return _oechem.OEIsBondMember_Add(self, item)

    __swig_destroy__ = _oechem.delete_OEIsBondMember
    __del__ = lambda self: None
OEIsBondMember_swigregister = _oechem.OEIsBondMember_swigregister
OEIsBondMember_swigregister(OEIsBondMember)


PartPredAtom = OEPartPredAtom

class PyFunction(object):
    """Base class for storing a python function to be used as a functor."""
    def __init__(self, func):
        self._func = func
    def __call__(self, obj):
        """__call__(self, obj) -> bool"""
        return self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class PyAtomFunction(PyFunction, OEUnaryAtomBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyAtomFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryAtomBoolFunc.__init__(self)
class PyBondFunction(PyFunction, OEUnaryBondBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on bonds"""
    def __init__(self, *args):
        """__init__(self, func) -> PyBondFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryBondBoolFunc.__init__(self)
class PyConfFunction(PyFunction, OEUnaryConfBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on conformers"""
    def __init__(self, *args):
        """__init__(self, func) -> PyConfFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryConfBoolFunc.__init__(self)
class PyGroupFunction(PyFunction, OEUnaryGroupBoolFunc):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem functor on groupbase"""
    def __init__(self, *args):
        """__init__(self, func) -> PyGroupFunction"""
        PyFunction.__init__(self, *args)
        OEUnaryGroupBoolFunc.__init__(self)

PyPredicate = PyFunction

class PyAtomPredicate(PyPredicate, OEUnaryAtomPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyAtomPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryAtomPred.__init__(self)
class PyBondPredicate(PyPredicate, OEUnaryBondPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyBondPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryBondPred.__init__(self)
class PyConfPredicate(PyPredicate, OEUnaryConfPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyConfPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryConfPred.__init__(self)
class PyGroupPredicate(PyPredicate, OEUnaryGroupPred):
    """Supports any callable python object (eg: def's and lambda's) being used as a OEChem predicate on atoms"""
    def __init__(self, *args):
        """__init__(self, func) -> PyGroupPredicate"""
        PyPredicate.__init__(self, *args)
        OEUnaryGroupPred.__init__(self)


class OEUnaryRoleSetBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OESystem::OERoleSet,bool)> 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__ = _oechem.delete_OEUnaryRoleSetBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OERoleSet') -> "bool":
        """__call__(OEUnaryRoleSetBoolFunc self, OERoleSet arg0) -> bool"""
        return _oechem.OEUnaryRoleSetBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OESystem::OERoleSet,bool)> self) -> OEUnaryRoleSetBoolFunc"""
        if self.__class__ == OEUnaryRoleSetBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryRoleSetBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryRoleSetBoolFunc(self)
        return weakref_proxy(self)
OEUnaryRoleSetBoolFunc_swigregister = _oechem.OEUnaryRoleSetBoolFunc_swigregister
OEUnaryRoleSetBoolFunc_swigregister(OEUnaryRoleSetBoolFunc)

class OEUnaryRoleSetPred(OEUnaryRoleSetBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OESystem::OERoleSet)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OESystem::OERoleSet)> self) -> OEUnaryRoleSetPred"""
        if self.__class__ == OEUnaryRoleSetPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryRoleSetPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryRoleSetPred
    __del__ = lambda self: None

    def __call__(self, a: 'OERoleSet') -> "bool":
        """__call__(OEUnaryRoleSetPred self, OERoleSet a) -> bool"""
        return _oechem.OEUnaryRoleSetPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """CreatePredicateCopy(OEUnaryRoleSetPred self) -> OEUnaryRoleSetPred"""
        return _oechem.OEUnaryRoleSetPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryRoleSetPred(self)
        return weakref_proxy(self)
OEUnaryRoleSetPred_swigregister = _oechem.OEUnaryRoleSetPred_swigregister
OEUnaryRoleSetPred_swigregister(OEUnaryRoleSetPred)

class OEBinaryRoleSetFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OESystem::OERoleSet,OESystem::OERoleSet,bool)> 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__ = _oechem.delete_OEBinaryRoleSetFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OERoleSet', a2: 'OERoleSet') -> "bool":
        """__call__(OEBinaryRoleSetFunc self, OERoleSet a1, OERoleSet a2) -> bool"""
        return _oechem.OEBinaryRoleSetFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OESystem::OERoleSet,OESystem::OERoleSet,bool)> self) -> OEBinaryRoleSetFunc"""
        if self.__class__ == OEBinaryRoleSetFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryRoleSetFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryRoleSetFunc(self)
        return weakref_proxy(self)
OEBinaryRoleSetFunc_swigregister = _oechem.OEBinaryRoleSetFunc_swigregister
OEBinaryRoleSetFunc_swigregister(OEBinaryRoleSetFunc)

class OEBinaryRoleSetPred(OEBinaryRoleSetFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OESystem::OERoleSet,OESystem::OERoleSet)> class."""

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

    def __call__(self, a1: 'OERoleSet', a2: 'OERoleSet') -> "bool":
        """__call__(OEBinaryRoleSetPred self, OERoleSet a1, OERoleSet a2) -> bool"""
        return _oechem.OEBinaryRoleSetPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OESystem::OERoleSet,OESystem::OERoleSet > *":
        """CreatePredicateCopy(OEBinaryRoleSetPred self) -> OEBinaryRoleSetPred"""
        return _oechem.OEBinaryRoleSetPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OESystem::OERoleSet,OESystem::OERoleSet)> self) -> OEBinaryRoleSetPred"""
        if self.__class__ == OEBinaryRoleSetPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryRoleSetPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryRoleSetPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryRoleSetPred(self)
        return weakref_proxy(self)
OEBinaryRoleSetPred_swigregister = _oechem.OEBinaryRoleSetPred_swigregister
OEBinaryRoleSetPred_swigregister(OEBinaryRoleSetPred)


class OENotRoleSet(OEUnaryRoleSetPred):
    """Negation of an OEUnary RoleSet Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary RoleSet Pred func) -> OENotNAME"""
        OEUnaryRoleSetPred.__init__(self)
        if not isinstance(func, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OERoleSet obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndRoleSet(OEUnaryRoleSetPred):
    """Logical 'and' of two OEUnary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary RoleSet Pred func1, OEUnary RoleSet Pred func2) -> OEAnd RoleSet"""
        OEUnaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OERoleSet obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrRoleSet(OEUnaryRoleSetPred):
    """Logical 'or' of two OEUnary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd RoleSet"""
        OEUnaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryRoleSetPred):
            raise TypeError("Expected a OEUnary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OERoleSet obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotRoleSet(OEBinaryRoleSetPred):
    """Negation of an OEBinary RoleSet Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary RoleSet Pred func) -> OENot RoleSet"""
        OEBinaryRoleSetPred.__init__(self)
        if not isinstance(func, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OERoleSet obj1, OERoleSet obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndRoleSet(OEBinaryRoleSetPred):
    """Logical 'and' of two OEBinary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd RoleSet"""
        OEBinaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OERoleSet obj1, OERoleSet obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrRoleSet(OEBinaryRoleSetPred):
    """Logical 'or' of two OEBinary RoleSet Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd RoleSet"""
        OEBinaryRoleSetPred.__init__(self)
        if not isinstance(func1, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryRoleSetPred):
            raise TypeError("Expected a OEBinary RoleSet Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OERoleSet obj1, OERoleSet obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OERole(object):
    """Proxy of C++ OESystem::OERole 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::OERole self) -> OERole
        __init__(OESystem::OERole self, OERole rhs) -> OERole
        __init__(OESystem::OERole self, std::string const & name) -> OERole
        """
        this = _oechem.new_OERole(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetName(self) -> "char const *":
        """GetName(OERole self) -> char const *"""
        return _oechem.OERole_GetName(self)


    def __hash__(self) -> "PyObject *":
        """__hash__(OERole self) -> PyObject *"""
        return _oechem.OERole___hash__(self)


    def __eq__(self, *args) -> "bool":
        """
        __eq__(OERole self, OERole rhs) -> bool
        __eq__(OERole self, OERole rhs) -> bool
        """
        return _oechem.OERole___eq__(self, *args)


    def __ne__(self, rhs: 'OERole') -> "bool":
        """__ne__(OERole self, OERole rhs) -> bool"""
        return _oechem.OERole___ne__(self, rhs)


    def __lt__(self, *args) -> "bool":
        """
        __lt__(OERole self, OERole rhs) -> bool
        __lt__(OERole self, OERole rhs) -> bool
        """
        return _oechem.OERole___lt__(self, *args)

    __swig_destroy__ = _oechem.delete_OERole
    __del__ = lambda self: None
OERole_swigregister = _oechem.OERole_swigregister
OERole_swigregister(OERole)

class OERoleSet(object):
    """Proxy of C++ OESystem::OERoleSet 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")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OERoleSet
    __del__ = lambda self: None

    def ClearRoles(self) -> "void":
        """ClearRoles(OERoleSet self)"""
        return _oechem.OERoleSet_ClearRoles(self)


    def AddRole(self, *args) -> "bool":
        """
        AddRole(OERoleSet self, OERole role) -> bool
        AddRole(OERoleSet self, std::string const & name) -> bool
        """
        return _oechem.OERoleSet_AddRole(self, *args)


    def DeleteRole(self, *args) -> "bool":
        """
        DeleteRole(OERoleSet self, OERole role) -> bool
        DeleteRole(OERoleSet self, std::string const & name) -> bool
        """
        return _oechem.OERoleSet_DeleteRole(self, *args)


    def HasRole(self, *args) -> "bool":
        """
        HasRole(OERoleSet self, OERole role) -> bool
        HasRole(OERoleSet self, std::string const & name) -> bool
        """
        return _oechem.OERoleSet_HasRole(self, *args)


    def GetRoles(self) -> "OESystem::OEIterBase< OESystem::OERole const > *":
        """GetRoles(OERoleSet self) -> OESystem::OEIterBase< OESystem::OERole const > *"""
        return _oechem.OERoleSet_GetRoles(self)


    def NumRoles(self) -> "unsigned int":
        """NumRoles(OERoleSet self) -> unsigned int"""
        return _oechem.OERoleSet_NumRoles(self)

OERoleSet_swigregister = _oechem.OERoleSet_swigregister
OERoleSet_swigregister(OERoleSet)

class OERoles(OERoleSet):
    """Proxy of C++ OESystem::OERoles 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::OERoles self) -> OERoles
        __init__(OESystem::OERoles self, OERoleSet rhs) -> OERoles
        """
        this = _oechem.new_OERoles(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERoles
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OERoles *":
        """CreateCopy(OERoles self) -> OERoles"""
        return _oechem.OERoles_CreateCopy(self)

OERoles_swigregister = _oechem.OERoles_swigregister
OERoles_swigregister(OERoles)

class OEHasRole(OEUnaryRoleSetPred):
    """Proxy of C++ OESystem::OEHasRole 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::OEHasRole self, OERole role) -> OEHasRole
        __init__(OESystem::OEHasRole self, std::string const & name) -> OEHasRole
        """
        this = _oechem.new_OEHasRole(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, someObject: 'OERoleSet') -> "bool":
        """__call__(OEHasRole self, OERoleSet someObject) -> bool"""
        return _oechem.OEHasRole___call__(self, someObject)


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


    __swig_destroy__ = _oechem.delete_OEHasRole
    __del__ = lambda self: None
OEHasRole_swigregister = _oechem.OEHasRole_swigregister
OEHasRole_swigregister(OEHasRole)

class OEIsTrueRoleSet(OEUnaryRoleSetPred):
    """Proxy of C++ OESystem::OEIsTrue<(OESystem::OERoleSet)> class."""

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

    def __call__(self, arg2: 'OERoleSet') -> "bool":
        """__call__(OEIsTrueRoleSet self, OERoleSet arg2) -> bool"""
        return _oechem.OEIsTrueRoleSet___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OESystem::OERoleSet,bool > *":
        """CreateCopy(OEIsTrueRoleSet self) -> OEUnaryRoleSetBoolFunc"""
        return _oechem.OEIsTrueRoleSet_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsTrue<(OESystem::OERoleSet)> self) -> OEIsTrueRoleSet"""
        this = _oechem.new_OEIsTrueRoleSet()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsTrueRoleSet
    __del__ = lambda self: None
OEIsTrueRoleSet_swigregister = _oechem.OEIsTrueRoleSet_swigregister
OEIsTrueRoleSet_swigregister(OEIsTrueRoleSet)

class OEIsFalseRoleSet(OEUnaryRoleSetPred):
    """Proxy of C++ OESystem::OEIsFalse<(OESystem::OERoleSet)> class."""

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

    def __call__(self, arg2: 'OERoleSet') -> "bool":
        """__call__(OEIsFalseRoleSet self, OERoleSet arg2) -> bool"""
        return _oechem.OEIsFalseRoleSet___call__(self, arg2)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OESystem::OERoleSet,bool > *":
        """CreateCopy(OEIsFalseRoleSet self) -> OEUnaryRoleSetBoolFunc"""
        return _oechem.OEIsFalseRoleSet_CreateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEIsFalse<(OESystem::OERoleSet)> self) -> OEIsFalseRoleSet"""
        this = _oechem.new_OEIsFalseRoleSet()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsFalseRoleSet
    __del__ = lambda self: None
OEIsFalseRoleSet_swigregister = _oechem.OEIsFalseRoleSet_swigregister
OEIsFalseRoleSet_swigregister(OEIsFalseRoleSet)

class OERoleIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OESystem::OERole)> 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).OESystem::OERole)> self) -> OERoleIter
        __init__(OESystem::OEIter<(q(const).OESystem::OERole)> self, OERoleIter rhs) -> OERoleIter
        __init__(OESystem::OEIter<(q(const).OESystem::OERole)> self, OESystem::OEIterBase< OESystem::OERole const > * rhs) -> OERoleIter
        __init__(OESystem::OEIter<(q(const).OESystem::OERole)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OERole const >::NonConstA > * rhs) -> OERoleIter
        """
        this = _oechem.new_OERoleIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERoleIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OERole const > *":
        """Copy(OERoleIter self) -> OESystem::OEIterBase< OESystem::OERole const > *"""
        return _oechem.OERoleIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OERoleIter self, OESystem::OEIterBase< OESystem::OERole const > * ib)
        Push(OERoleIter self, OERoleIter iter)
        """
        return _oechem.OERoleIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OERole const,OESystem::OERole const > const &') -> "void":
        """Sort(OERoleIter self, OESystem::OEBinaryPredicate< OESystem::OERole const,OESystem::OERole const > const & sort_criterion)"""
        return _oechem.OERoleIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OERole const > &":
        """ToFirst(OERoleIter self) -> OERoleIter"""
        return _oechem.OERoleIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OERole const > &":
        """ToLast(OERoleIter self) -> OERoleIter"""
        return _oechem.OERoleIter_ToLast(self)


    def __ref__(self) -> "OESystem::OERole const &":
        """__ref__(OERoleIter self) -> OERole"""
        return _oechem.OERoleIter___ref__(self)


    def IsValid(self):
      return _oechem.OERoleIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OERoleIter self) -> PyObject *"""
        return _oechem.OERoleIter_next(self)


    def Target(self) -> "OESystem::OERole const &":
        """Target(OERoleIter self) -> OERole"""
        return _oechem.OERoleIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OERole const > &":
        """
        Next(OERoleIter self) -> OERoleIter
        Next(OERoleIter self, int i) -> OERoleIter
        """
        return _oechem.OERoleIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OERole const > &":
        """
        Prev(OERoleIter self) -> OERoleIter
        Prev(OERoleIter self, int i) -> OERoleIter
        """
        return _oechem.OERoleIter_Prev(self, *args)

OERoleIter_swigregister = _oechem.OERoleIter_swigregister
OERoleIter_swigregister(OERoleIter)

class OEMatchBase(OERoleSet):
    """Proxy of C++ OEChem::OEMatchBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEMatchBase
    __del__ = lambda self: None

    def Clear(self) -> "void":
        """Clear(OEMatchBase self)"""
        return _oechem.OEMatchBase_Clear(self)


    def IsValid(self) -> "bool":
        """IsValid(OEMatchBase self) -> bool"""
        return _oechem.OEMatchBase_IsValid(self)


    def IsValid(self):
      return _oechem.OEMatchBase___nonzero__(self)



    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMatchBase self) -> unsigned int"""
        return _oechem.OEMatchBase_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMatchBase self) -> unsigned int"""
        return _oechem.OEMatchBase_NumBonds(self)


    def GetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *":
        """GetAtoms(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *"""
        return _oechem.OEMatchBase_GetAtoms(self)


    def GetBonds(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *":
        """GetBonds(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *"""
        return _oechem.OEMatchBase_GetBonds(self)


    def GetPatternAtoms(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """GetPatternAtoms(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oechem.OEMatchBase_GetPatternAtoms(self)


    def GetPatternBonds(self) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """GetPatternBonds(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEBondBase > *"""
        return _oechem.OEMatchBase_GetPatternBonds(self)


    def GetTargetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """GetTargetAtoms(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oechem.OEMatchBase_GetTargetAtoms(self)


    def GetTargetBonds(self) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """GetTargetBonds(OEMatchBase self) -> OESystem::OEIterBase< OEChem::OEBondBase > *"""
        return _oechem.OEMatchBase_GetTargetBonds(self)


    def CreateCopy(self) -> "OEChem::OEMatchBase *":
        """CreateCopy(OEMatchBase self) -> OEMatchBase"""
        return _oechem.OEMatchBase_CreateCopy(self)

OEMatchBase_swigregister = _oechem.OEMatchBase_swigregister
OEMatchBase_swigregister(OEMatchBase)

class OEMatch(OEMatchBase):
    """Proxy of C++ OEChem::OEMatch 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__(OEChem::OEMatch self) -> OEMatch
        __init__(OEChem::OEMatch self, std::vector< OEChem::OEMatchPair< OEChem::OEAtomBase > > const & arg2) -> OEMatch
        __init__(OEChem::OEMatch self, std::vector< OEChem::OEMatchPair< OEChem::OEBondBase > > const & arg2) -> OEMatch
        __init__(OEChem::OEMatch self, std::vector< OEChem::OEMatchPair< OEChem::OEAtomBase > > * arg2, std::vector< OEChem::OEMatchPair< OEChem::OEBondBase > > * arg3) -> OEMatch
        __init__(OEChem::OEMatch self, OEMatch arg2) -> OEMatch
        __init__(OEChem::OEMatch self, OEMatchBase arg2) -> OEMatch
        """
        this = _oechem.new_OEMatch(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatch
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEChem::OEMatchBase *":
        """CreateCopy(OEMatch self) -> OEMatchBase"""
        return _oechem.OEMatch_CreateCopy(self)


    def Clear(self) -> "void":
        """Clear(OEMatch self)"""
        return _oechem.OEMatch_Clear(self)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEMatch self) -> unsigned int"""
        return _oechem.OEMatch_NumAtoms(self)


    def NumBonds(self) -> "unsigned int":
        """NumBonds(OEMatch self) -> unsigned int"""
        return _oechem.OEMatch_NumBonds(self)


    def AddPair(self, *args) -> "bool":
        """
        AddPair(OEMatch self, OEAtomBase arg2, OEAtomBase arg3) -> bool
        AddPair(OEMatch self, OEBondBase arg2, OEBondBase arg3) -> bool
        """
        return _oechem.OEMatch_AddPair(self, *args)


    def GetAtoms(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *":
        """GetAtoms(OEMatch self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *"""
        return _oechem.OEMatch_GetAtoms(self)


    def GetBonds(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *":
        """GetBonds(OEMatch self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *"""
        return _oechem.OEMatch_GetBonds(self)

OEMatch_swigregister = _oechem.OEMatch_swigregister
OEMatch_swigregister(OEMatch)


OECreateOEGraphMol = OEGraphMol
OECreateOEMol = OEMol
OECreateOEQMol = OEQMol

class OEInChIOptions(object):
    """Proxy of C++ OEChem::OEInChIOptions 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__(OEChem::OEInChIOptions self, unsigned int flavor) -> OEInChIOptions
        __init__(OEChem::OEInChIOptions self) -> OEInChIOptions
        __init__(OEChem::OEInChIOptions self, OEInChIOptions arg2) -> OEInChIOptions
        """
        this = _oechem.new_OEInChIOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInChIOptions
    __del__ = lambda self: None

    def SetHydrogens(self, val: 'bool') -> "void":
        """SetHydrogens(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetHydrogens(self, val)


    def GetHydrogens(self) -> "bool":
        """GetHydrogens(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetHydrogens(self)


    def SetStereo(self, val: 'bool') -> "void":
        """SetStereo(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetStereo(self, val)


    def GetStereo(self) -> "bool":
        """GetStereo(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetStereo(self)


    def SetRelativeStereo(self, val: 'bool') -> "void":
        """SetRelativeStereo(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetRelativeStereo(self, val)


    def GetRelativeStereo(self) -> "bool":
        """GetRelativeStereo(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetRelativeStereo(self)


    def SetRacemicStereo(self, val: 'bool') -> "void":
        """SetRacemicStereo(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetRacemicStereo(self, val)


    def GetRacemicStereo(self) -> "bool":
        """GetRacemicStereo(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetRacemicStereo(self)


    def SetChiral(self, val: 'bool') -> "void":
        """SetChiral(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetChiral(self, val)


    def GetChiral(self) -> "bool":
        """GetChiral(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetChiral(self)


    def SetFixedHLayer(self, val: 'bool') -> "void":
        """SetFixedHLayer(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetFixedHLayer(self, val)


    def GetFixedHLayer(self) -> "bool":
        """GetFixedHLayer(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetFixedHLayer(self)


    def SetReconnectedMetals(self, val: 'bool') -> "void":
        """SetReconnectedMetals(OEInChIOptions self, bool val)"""
        return _oechem.OEInChIOptions_SetReconnectedMetals(self, val)


    def GetReconnectedMetals(self) -> "bool":
        """GetReconnectedMetals(OEInChIOptions self) -> bool"""
        return _oechem.OEInChIOptions_GetReconnectedMetals(self)


    def SetTimeout(self, val: 'unsigned int') -> "void":
        """SetTimeout(OEInChIOptions self, unsigned int val)"""
        return _oechem.OEInChIOptions_SetTimeout(self, val)


    def GetTimeout(self) -> "unsigned int":
        """GetTimeout(OEInChIOptions self) -> unsigned int"""
        return _oechem.OEInChIOptions_GetTimeout(self)

OEInChIOptions_swigregister = _oechem.OEInChIOptions_swigregister
OEInChIOptions_swigregister(OEInChIOptions)


def OEParseInChI(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OEParseInChI(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OEParseInChI(mol, str)

def OEMolecularFormula(mol: 'OEMolBase', hydrogenisotopic: 'bool'=False) -> "std::string":
    """
    OEMolecularFormula(OEMolBase mol, bool hydrogenisotopic=False) -> std::string
    OEMolecularFormula(OEMolBase mol) -> std::string
    """
    return _oechem.OEMolecularFormula(mol, hydrogenisotopic)

def OECreateInChI(*args) -> "std::string":
    """
    OECreateInChI(std::string & str, OEMolBase mol, OEInChIOptions arg3)
    OECreateInChI(std::string & str, OEMolBase mol)
    OECreateInChI(OEMolBase mol) -> std::string
    OECreateInChI(OEMolBase mol, OEInChIOptions opts) -> std::string
    """
    return _oechem.OECreateInChI(*args)

def OECreateInChIKey(*args) -> "std::string":
    """
    OECreateInChIKey(std::string & str, OEMolBase mol, OEInChIOptions arg3)
    OECreateInChIKey(std::string & str, OEMolBase mol)
    OECreateInChIKey(OEMolBase mol) -> std::string
    OECreateInChIKey(OEMolBase mol, OEInChIOptions opts) -> std::string
    """
    return _oechem.OECreateInChIKey(*args)
class OEAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEAtomBase)> 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::OEAtomBase)> self) -> OEAtomIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBase)> self, OEAtomIter rhs) -> OEAtomIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBase)> self, OESystem::OEIterBase< OEChem::OEAtomBase > * rhs) -> OEAtomIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEAtomBase >::NonConstA > * rhs) -> OEAtomIter
        """
        this = _oechem.new_OEAtomIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """Copy(OEAtomIter self) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
        return _oechem.OEAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAtomIter self, OESystem::OEIterBase< OEChem::OEAtomBase > * ib)
        Push(OEAtomIter self, OEAtomIter iter)
        """
        return _oechem.OEAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryAtomPred') -> "void":
        """Sort(OEAtomIter self, OEBinaryAtomPred sort_criterion)"""
        return _oechem.OEAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """ToFirst(OEAtomIter self) -> OEAtomIter"""
        return _oechem.OEAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """ToLast(OEAtomIter self) -> OEAtomIter"""
        return _oechem.OEAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEAtomBase &":
        """__ref__(OEAtomIter self) -> OEAtomBase"""
        return _oechem.OEAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAtomIter self) -> PyObject *"""
        return _oechem.OEAtomIter_next(self)


    def Target(self) -> "OEChem::OEAtomBase &":
        """Target(OEAtomIter self) -> OEAtomBase"""
        return _oechem.OEAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """
        Next(OEAtomIter self) -> OEAtomIter
        Next(OEAtomIter self, int i) -> OEAtomIter
        """
        return _oechem.OEAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase > &":
        """
        Prev(OEAtomIter self) -> OEAtomIter
        Prev(OEAtomIter self, int i) -> OEAtomIter
        """
        return _oechem.OEAtomIter_Prev(self, *args)

OEAtomIter_swigregister = _oechem.OEAtomIter_swigregister
OEAtomIter_swigregister(OEAtomIter)

class OEBondIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEBondBase)> 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::OEBondBase)> self) -> OEBondIter
        __init__(OESystem::OEIter<(OEChem::OEBondBase)> self, OEBondIter rhs) -> OEBondIter
        __init__(OESystem::OEIter<(OEChem::OEBondBase)> self, OESystem::OEIterBase< OEChem::OEBondBase > * rhs) -> OEBondIter
        __init__(OESystem::OEIter<(OEChem::OEBondBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEBondBase >::NonConstA > * rhs) -> OEBondIter
        """
        this = _oechem.new_OEBondIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBondIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """Copy(OEBondIter self) -> OESystem::OEIterBase< OEChem::OEBondBase > *"""
        return _oechem.OEBondIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEBondIter self, OESystem::OEIterBase< OEChem::OEBondBase > * ib)
        Push(OEBondIter self, OEBondIter iter)
        """
        return _oechem.OEBondIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryBondPred') -> "void":
        """Sort(OEBondIter self, OEBinaryBondPred sort_criterion)"""
        return _oechem.OEBondIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """ToFirst(OEBondIter self) -> OEBondIter"""
        return _oechem.OEBondIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """ToLast(OEBondIter self) -> OEBondIter"""
        return _oechem.OEBondIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEBondBase &":
        """__ref__(OEBondIter self) -> OEBondBase"""
        return _oechem.OEBondIter___ref__(self)


    def IsValid(self):
      return _oechem.OEBondIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEBondIter self) -> PyObject *"""
        return _oechem.OEBondIter_next(self)


    def Target(self) -> "OEChem::OEBondBase &":
        """Target(OEBondIter self) -> OEBondBase"""
        return _oechem.OEBondIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """
        Next(OEBondIter self) -> OEBondIter
        Next(OEBondIter self, int i) -> OEBondIter
        """
        return _oechem.OEBondIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEBondBase > &":
        """
        Prev(OEBondIter self) -> OEBondIter
        Prev(OEBondIter self, int i) -> OEBondIter
        """
        return _oechem.OEBondIter_Prev(self, *args)

OEBondIter_swigregister = _oechem.OEBondIter_swigregister
OEBondIter_swigregister(OEBondIter)

class OEQAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEQAtomBase)> 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::OEQAtomBase)> self) -> OEQAtomIter
        __init__(OESystem::OEIter<(OEChem::OEQAtomBase)> self, OEQAtomIter rhs) -> OEQAtomIter
        __init__(OESystem::OEIter<(OEChem::OEQAtomBase)> self, OESystem::OEIterBase< OEChem::OEQAtomBase > * rhs) -> OEQAtomIter
        __init__(OESystem::OEIter<(OEChem::OEQAtomBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEQAtomBase >::NonConstA > * rhs) -> OEQAtomIter
        """
        this = _oechem.new_OEQAtomIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEQAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEQAtomBase > *":
        """Copy(OEQAtomIter self) -> OESystem::OEIterBase< OEChem::OEQAtomBase > *"""
        return _oechem.OEQAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEQAtomIter self, OESystem::OEIterBase< OEChem::OEQAtomBase > * ib)
        Push(OEQAtomIter self, OEQAtomIter iter)
        """
        return _oechem.OEQAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEQAtomBase,OEChem::OEQAtomBase > const &') -> "void":
        """Sort(OEQAtomIter self, OESystem::OEBinaryPredicate< OEChem::OEQAtomBase,OEChem::OEQAtomBase > const & sort_criterion)"""
        return _oechem.OEQAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """ToFirst(OEQAtomIter self) -> OEQAtomIter"""
        return _oechem.OEQAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """ToLast(OEQAtomIter self) -> OEQAtomIter"""
        return _oechem.OEQAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEQAtomBase &":
        """__ref__(OEQAtomIter self) -> OEQAtomBase"""
        return _oechem.OEQAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEQAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEQAtomIter self) -> PyObject *"""
        return _oechem.OEQAtomIter_next(self)


    def Target(self) -> "OEChem::OEQAtomBase &":
        """Target(OEQAtomIter self) -> OEQAtomBase"""
        return _oechem.OEQAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """
        Next(OEQAtomIter self) -> OEQAtomIter
        Next(OEQAtomIter self, int i) -> OEQAtomIter
        """
        return _oechem.OEQAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEQAtomBase > &":
        """
        Prev(OEQAtomIter self) -> OEQAtomIter
        Prev(OEQAtomIter self, int i) -> OEQAtomIter
        """
        return _oechem.OEQAtomIter_Prev(self, *args)

OEQAtomIter_swigregister = _oechem.OEQAtomIter_swigregister
OEQAtomIter_swigregister(OEQAtomIter)

class OEQBondIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEQBondBase)> 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::OEQBondBase)> self) -> OEQBondIter
        __init__(OESystem::OEIter<(OEChem::OEQBondBase)> self, OEQBondIter rhs) -> OEQBondIter
        __init__(OESystem::OEIter<(OEChem::OEQBondBase)> self, OESystem::OEIterBase< OEChem::OEQBondBase > * rhs) -> OEQBondIter
        __init__(OESystem::OEIter<(OEChem::OEQBondBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEQBondBase >::NonConstA > * rhs) -> OEQBondIter
        """
        this = _oechem.new_OEQBondIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEQBondIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEQBondBase > *":
        """Copy(OEQBondIter self) -> OESystem::OEIterBase< OEChem::OEQBondBase > *"""
        return _oechem.OEQBondIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEQBondIter self, OESystem::OEIterBase< OEChem::OEQBondBase > * ib)
        Push(OEQBondIter self, OEQBondIter iter)
        """
        return _oechem.OEQBondIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEQBondBase,OEChem::OEQBondBase > const &') -> "void":
        """Sort(OEQBondIter self, OESystem::OEBinaryPredicate< OEChem::OEQBondBase,OEChem::OEQBondBase > const & sort_criterion)"""
        return _oechem.OEQBondIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """ToFirst(OEQBondIter self) -> OEQBondIter"""
        return _oechem.OEQBondIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """ToLast(OEQBondIter self) -> OEQBondIter"""
        return _oechem.OEQBondIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEQBondBase &":
        """__ref__(OEQBondIter self) -> OEQBondBase"""
        return _oechem.OEQBondIter___ref__(self)


    def IsValid(self):
      return _oechem.OEQBondIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEQBondIter self) -> PyObject *"""
        return _oechem.OEQBondIter_next(self)


    def Target(self) -> "OEChem::OEQBondBase &":
        """Target(OEQBondIter self) -> OEQBondBase"""
        return _oechem.OEQBondIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """
        Next(OEQBondIter self) -> OEQBondIter
        Next(OEQBondIter self, int i) -> OEQBondIter
        """
        return _oechem.OEQBondIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEQBondBase > &":
        """
        Prev(OEQBondIter self) -> OEQBondIter
        Prev(OEQBondIter self, int i) -> OEQBondIter
        """
        return _oechem.OEQBondIter_Prev(self, *args)

OEQBondIter_swigregister = _oechem.OEQBondIter_swigregister
OEQBondIter_swigregister(OEQBondIter)

class OEConfIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEConfBase)> 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::OEConfBase)> self) -> OEConfIter
        __init__(OESystem::OEIter<(OEChem::OEConfBase)> self, OEConfIter rhs) -> OEConfIter
        __init__(OESystem::OEIter<(OEChem::OEConfBase)> self, OESystem::OEIterBase< OEChem::OEConfBase > * rhs) -> OEConfIter
        __init__(OESystem::OEIter<(OEChem::OEConfBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEConfBase >::NonConstA > * rhs) -> OEConfIter
        """
        this = _oechem.new_OEConfIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConfIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEConfBase > *":
        """Copy(OEConfIter self) -> OESystem::OEIterBase< OEChem::OEConfBase > *"""
        return _oechem.OEConfIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConfIter self, OESystem::OEIterBase< OEChem::OEConfBase > * ib)
        Push(OEConfIter self, OEConfIter iter)
        """
        return _oechem.OEConfIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OEBinaryConfPred') -> "void":
        """Sort(OEConfIter self, OEBinaryConfPred sort_criterion)"""
        return _oechem.OEConfIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """ToFirst(OEConfIter self) -> OEConfIter"""
        return _oechem.OEConfIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """ToLast(OEConfIter self) -> OEConfIter"""
        return _oechem.OEConfIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEConfBase &":
        """__ref__(OEConfIter self) -> OEConfBase"""
        return _oechem.OEConfIter___ref__(self)


    def IsValid(self):
      return _oechem.OEConfIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConfIter self) -> PyObject *"""
        return _oechem.OEConfIter_next(self)


    def Target(self) -> "OEChem::OEConfBase &":
        """Target(OEConfIter self) -> OEConfBase"""
        return _oechem.OEConfIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """
        Next(OEConfIter self) -> OEConfIter
        Next(OEConfIter self, int i) -> OEConfIter
        """
        return _oechem.OEConfIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEConfBase > &":
        """
        Prev(OEConfIter self) -> OEConfIter
        Prev(OEConfIter self, int i) -> OEConfIter
        """
        return _oechem.OEConfIter_Prev(self, *args)

OEConfIter_swigregister = _oechem.OEConfIter_swigregister
OEConfIter_swigregister(OEConfIter)

class OEMolBaseIter(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) -> OEMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OEMolBaseIter rhs) -> OEMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OESystem::OEIterBase< OEChem::OEMolBase > * rhs) -> OEMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMolBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMolBase >::NonConstA > * rhs) -> OEMolBaseIter
        """
        this = _oechem.new_OEMolBaseIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """Copy(OEMolBaseIter self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.OEMolBaseIter_Copy(self)


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


    def Sort(self, sort_criterion: 'OEBinaryMolBasePred') -> "void":
        """Sort(OEMolBaseIter self, OEBinaryMolBasePred sort_criterion)"""
        return _oechem.OEMolBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """ToFirst(OEMolBaseIter self) -> OEMolBaseIter"""
        return _oechem.OEMolBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMolBase > &":
        """ToLast(OEMolBaseIter self) -> OEMolBaseIter"""
        return _oechem.OEMolBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMolBase &":
        """__ref__(OEMolBaseIter self) -> OEMolBase"""
        return _oechem.OEMolBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMolBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMolBaseIter self) -> PyObject *"""
        return _oechem.OEMolBaseIter_next(self)


    def Target(self) -> "OEChem::OEMolBase &":
        """Target(OEMolBaseIter self) -> OEMolBase"""
        return _oechem.OEMolBaseIter_Target(self)


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


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

OEMolBaseIter_swigregister = _oechem.OEMolBaseIter_swigregister
OEMolBaseIter_swigregister(OEMolBaseIter)

class OEMCMolBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMCMolBase)> 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::OEMCMolBase)> self) -> OEMCMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMCMolBase)> self, OEMCMolBaseIter rhs) -> OEMCMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMCMolBase)> self, OESystem::OEIterBase< OEChem::OEMCMolBase > * rhs) -> OEMCMolBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMCMolBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMCMolBase >::NonConstA > * rhs) -> OEMCMolBaseIter
        """
        this = _oechem.new_OEMCMolBaseIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCMolBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
        """Copy(OEMCMolBaseIter self) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *"""
        return _oechem.OEMCMolBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMCMolBaseIter self, OESystem::OEIterBase< OEChem::OEMCMolBase > * ib)
        Push(OEMCMolBaseIter self, OEMCMolBaseIter iter)
        """
        return _oechem.OEMCMolBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMCMolBase,OEChem::OEMCMolBase > const &') -> "void":
        """Sort(OEMCMolBaseIter self, OESystem::OEBinaryPredicate< OEChem::OEMCMolBase,OEChem::OEMCMolBase > const & sort_criterion)"""
        return _oechem.OEMCMolBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """ToFirst(OEMCMolBaseIter self) -> OEMCMolBaseIter"""
        return _oechem.OEMCMolBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """ToLast(OEMCMolBaseIter self) -> OEMCMolBaseIter"""
        return _oechem.OEMCMolBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMCMolBase &":
        """__ref__(OEMCMolBaseIter self) -> OEMCMolBase"""
        return _oechem.OEMCMolBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMCMolBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMCMolBaseIter self) -> PyObject *"""
        return _oechem.OEMCMolBaseIter_next(self)


    def Target(self) -> "OEChem::OEMCMolBase &":
        """Target(OEMCMolBaseIter self) -> OEMCMolBase"""
        return _oechem.OEMCMolBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """
        Next(OEMCMolBaseIter self) -> OEMCMolBaseIter
        Next(OEMCMolBaseIter self, int i) -> OEMCMolBaseIter
        """
        return _oechem.OEMCMolBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMCMolBase > &":
        """
        Prev(OEMCMolBaseIter self) -> OEMCMolBaseIter
        Prev(OEMCMolBaseIter self, int i) -> OEMCMolBaseIter
        """
        return _oechem.OEMCMolBaseIter_Prev(self, *args)

OEMCMolBaseIter_swigregister = _oechem.OEMCMolBaseIter_swigregister
OEMCMolBaseIter_swigregister(OEMCMolBaseIter)

class OEMatchBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMatchBase)> 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::OEMatchBase)> self) -> OEMatchBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMatchBase)> self, OEMatchBaseIter rhs) -> OEMatchBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMatchBase)> self, OESystem::OEIterBase< OEChem::OEMatchBase > * rhs) -> OEMatchBaseIter
        __init__(OESystem::OEIter<(OEChem::OEMatchBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMatchBase >::NonConstA > * rhs) -> OEMatchBaseIter
        """
        this = _oechem.new_OEMatchBaseIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """Copy(OEMatchBaseIter self) -> OESystem::OEIterBase< OEChem::OEMatchBase > *"""
        return _oechem.OEMatchBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchBaseIter self, OESystem::OEIterBase< OEChem::OEMatchBase > * ib)
        Push(OEMatchBaseIter self, OEMatchBaseIter iter)
        """
        return _oechem.OEMatchBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMatchBase,OEChem::OEMatchBase > const &') -> "void":
        """Sort(OEMatchBaseIter self, OESystem::OEBinaryPredicate< OEChem::OEMatchBase,OEChem::OEMatchBase > const & sort_criterion)"""
        return _oechem.OEMatchBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """ToFirst(OEMatchBaseIter self) -> OEMatchBaseIter"""
        return _oechem.OEMatchBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """ToLast(OEMatchBaseIter self) -> OEMatchBaseIter"""
        return _oechem.OEMatchBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMatchBase &":
        """__ref__(OEMatchBaseIter self) -> OEMatchBase"""
        return _oechem.OEMatchBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMatchBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchBaseIter self) -> PyObject *"""
        return _oechem.OEMatchBaseIter_next(self)


    def Target(self) -> "OEChem::OEMatchBase &":
        """Target(OEMatchBaseIter self) -> OEMatchBase"""
        return _oechem.OEMatchBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """
        Next(OEMatchBaseIter self) -> OEMatchBaseIter
        Next(OEMatchBaseIter self, int i) -> OEMatchBaseIter
        """
        return _oechem.OEMatchBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMatchBase > &":
        """
        Prev(OEMatchBaseIter self) -> OEMatchBaseIter
        Prev(OEMatchBaseIter self, int i) -> OEMatchBaseIter
        """
        return _oechem.OEMatchBaseIter_Prev(self, *args)

OEMatchBaseIter_swigregister = _oechem.OEMatchBaseIter_swigregister
OEMatchBaseIter_swigregister(OEMatchBaseIter)

class OEMatchBaseAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> 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::OEMatchPair<(OEChem::OEAtomBase)>)> self) -> OEMatchBaseAtomIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self, OEMatchBaseAtomIter rhs) -> OEMatchBaseAtomIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > * rhs) -> OEMatchBaseAtomIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEAtomBase)>)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > >::NonConstA > * rhs) -> OEMatchBaseAtomIter
        """
        this = _oechem.new_OEMatchBaseAtomIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchBaseAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *":
        """Copy(OEMatchBaseAtomIter self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > *"""
        return _oechem.OEMatchBaseAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchBaseAtomIter self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEAtomBase > > * ib)
        Push(OEMatchBaseAtomIter self, OEMatchBaseAtomIter iter)
        """
        return _oechem.OEMatchBaseAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEAtomBase >,OEChem::OEMatchPair< OEChem::OEAtomBase > > const &') -> "void":
        """Sort(OEMatchBaseAtomIter self, OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEAtomBase >,OEChem::OEMatchPair< OEChem::OEAtomBase > > const & sort_criterion)"""
        return _oechem.OEMatchBaseAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """ToFirst(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter"""
        return _oechem.OEMatchBaseAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """ToLast(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter"""
        return _oechem.OEMatchBaseAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMatchPair< OEChem::OEAtomBase > &":
        """__ref__(OEMatchBaseAtomIter self) -> OEMatchPairAtom"""
        return _oechem.OEMatchBaseAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMatchBaseAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchBaseAtomIter self) -> PyObject *"""
        return _oechem.OEMatchBaseAtomIter_next(self)


    def Target(self) -> "OEChem::OEMatchPair< OEChem::OEAtomBase > &":
        """Target(OEMatchBaseAtomIter self) -> OEMatchPairAtom"""
        return _oechem.OEMatchBaseAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """
        Next(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter
        Next(OEMatchBaseAtomIter self, int i) -> OEMatchBaseAtomIter
        """
        return _oechem.OEMatchBaseAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEAtomBase > > &":
        """
        Prev(OEMatchBaseAtomIter self) -> OEMatchBaseAtomIter
        Prev(OEMatchBaseAtomIter self, int i) -> OEMatchBaseAtomIter
        """
        return _oechem.OEMatchBaseAtomIter_Prev(self, *args)

OEMatchBaseAtomIter_swigregister = _oechem.OEMatchBaseAtomIter_swigregister
OEMatchBaseAtomIter_swigregister(OEMatchBaseAtomIter)

class OEMatchBaseBondIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> 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::OEMatchPair<(OEChem::OEBondBase)>)> self) -> OEMatchBaseBondIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self, OEMatchBaseBondIter rhs) -> OEMatchBaseBondIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > * rhs) -> OEMatchBaseBondIter
        __init__(OESystem::OEIter<(OEChem::OEMatchPair<(OEChem::OEBondBase)>)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > >::NonConstA > * rhs) -> OEMatchBaseBondIter
        """
        this = _oechem.new_OEMatchBaseBondIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchBaseBondIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *":
        """Copy(OEMatchBaseBondIter self) -> OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > *"""
        return _oechem.OEMatchBaseBondIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchBaseBondIter self, OESystem::OEIterBase< OEChem::OEMatchPair< OEChem::OEBondBase > > * ib)
        Push(OEMatchBaseBondIter self, OEMatchBaseBondIter iter)
        """
        return _oechem.OEMatchBaseBondIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEBondBase >,OEChem::OEMatchPair< OEChem::OEBondBase > > const &') -> "void":
        """Sort(OEMatchBaseBondIter self, OESystem::OEBinaryPredicate< OEChem::OEMatchPair< OEChem::OEBondBase >,OEChem::OEMatchPair< OEChem::OEBondBase > > const & sort_criterion)"""
        return _oechem.OEMatchBaseBondIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """ToFirst(OEMatchBaseBondIter self) -> OEMatchBaseBondIter"""
        return _oechem.OEMatchBaseBondIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """ToLast(OEMatchBaseBondIter self) -> OEMatchBaseBondIter"""
        return _oechem.OEMatchBaseBondIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEMatchPair< OEChem::OEBondBase > &":
        """__ref__(OEMatchBaseBondIter self) -> OEMatchPairBond"""
        return _oechem.OEMatchBaseBondIter___ref__(self)


    def IsValid(self):
      return _oechem.OEMatchBaseBondIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchBaseBondIter self) -> PyObject *"""
        return _oechem.OEMatchBaseBondIter_next(self)


    def Target(self) -> "OEChem::OEMatchPair< OEChem::OEBondBase > &":
        """Target(OEMatchBaseBondIter self) -> OEMatchPairBond"""
        return _oechem.OEMatchBaseBondIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """
        Next(OEMatchBaseBondIter self) -> OEMatchBaseBondIter
        Next(OEMatchBaseBondIter self, int i) -> OEMatchBaseBondIter
        """
        return _oechem.OEMatchBaseBondIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEMatchPair< OEChem::OEBondBase > > &":
        """
        Prev(OEMatchBaseBondIter self) -> OEMatchBaseBondIter
        Prev(OEMatchBaseBondIter self, int i) -> OEMatchBaseBondIter
        """
        return _oechem.OEMatchBaseBondIter_Prev(self, *args)

OEMatchBaseBondIter_swigregister = _oechem.OEMatchBaseBondIter_swigregister
OEMatchBaseBondIter_swigregister(OEMatchBaseBondIter)

class OEMatchPairAtom(object):
    """Proxy of C++ OEChem::OEMatchPair<(OEChem::OEAtomBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    pattern = _swig_property(_oechem.OEMatchPairAtom_pattern_get, _oechem.OEMatchPairAtom_pattern_set)
    target = _swig_property(_oechem.OEMatchPairAtom_target_get, _oechem.OEMatchPairAtom_target_set)

    def __init__(self, *args):
        """
        __init__(OEChem::OEMatchPair<(OEChem::OEAtomBase)> self) -> OEMatchPairAtom
        __init__(OEChem::OEMatchPair<(OEChem::OEAtomBase)> self, OEAtomBase p, OEAtomBase t) -> OEMatchPairAtom
        """
        this = _oechem.new_OEMatchPairAtom(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchPairAtom
    __del__ = lambda self: None
OEMatchPairAtom_swigregister = _oechem.OEMatchPairAtom_swigregister
OEMatchPairAtom_swigregister(OEMatchPairAtom)

class OEMatchPairBond(object):
    """Proxy of C++ OEChem::OEMatchPair<(OEChem::OEBondBase)> class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    pattern = _swig_property(_oechem.OEMatchPairBond_pattern_get, _oechem.OEMatchPairBond_pattern_set)
    target = _swig_property(_oechem.OEMatchPairBond_target_get, _oechem.OEMatchPairBond_target_set)

    def __init__(self, *args):
        """
        __init__(OEChem::OEMatchPair<(OEChem::OEBondBase)> self) -> OEMatchPairBond
        __init__(OEChem::OEMatchPair<(OEChem::OEBondBase)> self, OEBondBase p, OEBondBase t) -> OEMatchPairBond
        """
        this = _oechem.new_OEMatchPairBond(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMatchPairBond
    __del__ = lambda self: None
OEMatchPairBond_swigregister = _oechem.OEMatchPairBond_swigregister
OEMatchPairBond_swigregister(OEMatchPairBond)

class OESDDataIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OESDDataPair)> 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::OESDDataPair)> self) -> OESDDataIter
        __init__(OESystem::OEIter<(OEChem::OESDDataPair)> self, OESDDataIter rhs) -> OESDDataIter
        __init__(OESystem::OEIter<(OEChem::OESDDataPair)> self, OESystem::OEIterBase< OEChem::OESDDataPair > * rhs) -> OESDDataIter
        __init__(OESystem::OEIter<(OEChem::OESDDataPair)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OESDDataPair >::NonConstA > * rhs) -> OESDDataIter
        """
        this = _oechem.new_OESDDataIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESDDataIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OESDDataPair > *":
        """Copy(OESDDataIter self) -> OESystem::OEIterBase< OEChem::OESDDataPair > *"""
        return _oechem.OESDDataIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESDDataIter self, OESystem::OEIterBase< OEChem::OESDDataPair > * ib)
        Push(OESDDataIter self, OESDDataIter iter)
        """
        return _oechem.OESDDataIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OESDDataPair,OEChem::OESDDataPair > const &') -> "void":
        """Sort(OESDDataIter self, OESystem::OEBinaryPredicate< OEChem::OESDDataPair,OEChem::OESDDataPair > const & sort_criterion)"""
        return _oechem.OESDDataIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """ToFirst(OESDDataIter self) -> OESDDataIter"""
        return _oechem.OESDDataIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """ToLast(OESDDataIter self) -> OESDDataIter"""
        return _oechem.OESDDataIter_ToLast(self)


    def __ref__(self) -> "OEChem::OESDDataPair &":
        """__ref__(OESDDataIter self) -> OESDDataPair"""
        return _oechem.OESDDataIter___ref__(self)


    def IsValid(self):
      return _oechem.OESDDataIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESDDataIter self) -> PyObject *"""
        return _oechem.OESDDataIter_next(self)


    def Target(self) -> "OEChem::OESDDataPair &":
        """Target(OESDDataIter self) -> OESDDataPair"""
        return _oechem.OESDDataIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """
        Next(OESDDataIter self) -> OESDDataIter
        Next(OESDDataIter self, int i) -> OESDDataIter
        """
        return _oechem.OESDDataIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OESDDataPair > &":
        """
        Prev(OESDDataIter self) -> OESDDataIter
        Prev(OESDDataIter self, int i) -> OESDDataIter
        """
        return _oechem.OESDDataIter_Prev(self, *args)

OESDDataIter_swigregister = _oechem.OESDDataIter_swigregister
OESDDataIter_swigregister(OESDDataIter)

class OETransBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OETransBase)> 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::OETransBase)> self) -> OETransBaseIter
        __init__(OESystem::OEIter<(OEChem::OETransBase)> self, OETransBaseIter rhs) -> OETransBaseIter
        __init__(OESystem::OEIter<(OEChem::OETransBase)> self, OESystem::OEIterBase< OEChem::OETransBase > * rhs) -> OETransBaseIter
        __init__(OESystem::OEIter<(OEChem::OETransBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OETransBase >::NonConstA > * rhs) -> OETransBaseIter
        """
        this = _oechem.new_OETransBaseIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OETransBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OETransBase > *":
        """Copy(OETransBaseIter self) -> OESystem::OEIterBase< OEChem::OETransBase > *"""
        return _oechem.OETransBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OETransBaseIter self, OESystem::OEIterBase< OEChem::OETransBase > * ib)
        Push(OETransBaseIter self, OETransBaseIter iter)
        """
        return _oechem.OETransBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OETransBase,OEChem::OETransBase > const &') -> "void":
        """Sort(OETransBaseIter self, OESystem::OEBinaryPredicate< OEChem::OETransBase,OEChem::OETransBase > const & sort_criterion)"""
        return _oechem.OETransBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """ToFirst(OETransBaseIter self) -> OETransBaseIter"""
        return _oechem.OETransBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """ToLast(OETransBaseIter self) -> OETransBaseIter"""
        return _oechem.OETransBaseIter_ToLast(self)


    def __ref__(self) -> "OEChem::OETransBase &":
        """__ref__(OETransBaseIter self) -> OETransBase"""
        return _oechem.OETransBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OETransBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OETransBaseIter self) -> PyObject *"""
        return _oechem.OETransBaseIter_next(self)


    def Target(self) -> "OEChem::OETransBase &":
        """Target(OETransBaseIter self) -> OETransBase"""
        return _oechem.OETransBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """
        Next(OETransBaseIter self) -> OETransBaseIter
        Next(OETransBaseIter self, int i) -> OETransBaseIter
        """
        return _oechem.OETransBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OETransBase > &":
        """
        Prev(OETransBaseIter self) -> OETransBaseIter
        Prev(OETransBaseIter self, int i) -> OETransBaseIter
        """
        return _oechem.OETransBaseIter_Prev(self, *args)

OETransBaseIter_swigregister = _oechem.OETransBaseIter_swigregister
OETransBaseIter_swigregister(OETransBaseIter)

class OENbrsIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OENbrs)> 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::OENbrs)> self) -> OENbrsIter
        __init__(OESystem::OEIter<(OEChem::OENbrs)> self, OENbrsIter rhs) -> OENbrsIter
        __init__(OESystem::OEIter<(OEChem::OENbrs)> self, OESystem::OEIterBase< OEChem::OENbrs > * rhs) -> OENbrsIter
        __init__(OESystem::OEIter<(OEChem::OENbrs)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OENbrs >::NonConstA > * rhs) -> OENbrsIter
        """
        this = _oechem.new_OENbrsIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OENbrsIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OENbrs > *":
        """Copy(OENbrsIter self) -> OESystem::OEIterBase< OEChem::OENbrs > *"""
        return _oechem.OENbrsIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OENbrsIter self, OESystem::OEIterBase< OEChem::OENbrs > * ib)
        Push(OENbrsIter self, OENbrsIter iter)
        """
        return _oechem.OENbrsIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OENbrs,OEChem::OENbrs > const &') -> "void":
        """Sort(OENbrsIter self, OESystem::OEBinaryPredicate< OEChem::OENbrs,OEChem::OENbrs > const & sort_criterion)"""
        return _oechem.OENbrsIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """ToFirst(OENbrsIter self) -> OENbrsIter"""
        return _oechem.OENbrsIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """ToLast(OENbrsIter self) -> OENbrsIter"""
        return _oechem.OENbrsIter_ToLast(self)


    def __ref__(self) -> "OEChem::OENbrs &":
        """__ref__(OENbrsIter self) -> OENbrs"""
        return _oechem.OENbrsIter___ref__(self)


    def IsValid(self):
      return _oechem.OENbrsIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OENbrsIter self) -> PyObject *"""
        return _oechem.OENbrsIter_next(self)


    def Target(self) -> "OEChem::OENbrs &":
        """Target(OENbrsIter self) -> OENbrs"""
        return _oechem.OENbrsIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """
        Next(OENbrsIter self) -> OENbrsIter
        Next(OENbrsIter self, int i) -> OENbrsIter
        """
        return _oechem.OENbrsIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OENbrs > &":
        """
        Prev(OENbrsIter self) -> OENbrsIter
        Prev(OENbrsIter self, int i) -> OENbrsIter
        """
        return _oechem.OENbrsIter_Prev(self, *args)

OENbrsIter_swigregister = _oechem.OENbrsIter_swigregister
OENbrsIter_swigregister(OENbrsIter)

class OEBaseDataIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEBaseData)> 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<(OESystem::OEBaseData)> self) -> OEBaseDataIter
        __init__(OESystem::OEIter<(OESystem::OEBaseData)> self, OEBaseDataIter rhs) -> OEBaseDataIter
        __init__(OESystem::OEIter<(OESystem::OEBaseData)> self, OESystem::OEIterBase< OESystem::OEBaseData > * rhs) -> OEBaseDataIter
        __init__(OESystem::OEIter<(OESystem::OEBaseData)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEBaseData >::NonConstA > * rhs) -> OEBaseDataIter
        """
        this = _oechem.new_OEBaseDataIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBaseDataIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEBaseData > *":
        """Copy(OEBaseDataIter self) -> OESystem::OEIterBase< OESystem::OEBaseData > *"""
        return _oechem.OEBaseDataIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEBaseDataIter self, OESystem::OEIterBase< OESystem::OEBaseData > * ib)
        Push(OEBaseDataIter self, OEBaseDataIter iter)
        """
        return _oechem.OEBaseDataIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEBaseData,OESystem::OEBaseData > const &') -> "void":
        """Sort(OEBaseDataIter self, OESystem::OEBinaryPredicate< OESystem::OEBaseData,OESystem::OEBaseData > const & sort_criterion)"""
        return _oechem.OEBaseDataIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """ToFirst(OEBaseDataIter self) -> OEBaseDataIter"""
        return _oechem.OEBaseDataIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """ToLast(OEBaseDataIter self) -> OEBaseDataIter"""
        return _oechem.OEBaseDataIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEBaseData &":
        """__ref__(OEBaseDataIter self) -> OEBaseData"""
        return _oechem.OEBaseDataIter___ref__(self)


    def IsValid(self):
      return _oechem.OEBaseDataIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEBaseDataIter self) -> PyObject *"""
        return _oechem.OEBaseDataIter_next(self)


    def Target(self) -> "OESystem::OEBaseData &":
        """Target(OEBaseDataIter self) -> OEBaseData"""
        return _oechem.OEBaseDataIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """
        Next(OEBaseDataIter self) -> OEBaseDataIter
        Next(OEBaseDataIter self, int i) -> OEBaseDataIter
        """
        return _oechem.OEBaseDataIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEBaseData > &":
        """
        Prev(OEBaseDataIter self) -> OEBaseDataIter
        Prev(OEBaseDataIter self, int i) -> OEBaseDataIter
        """
        return _oechem.OEBaseDataIter_Prev(self, *args)

OEBaseDataIter_swigregister = _oechem.OEBaseDataIter_swigregister
OEBaseDataIter_swigregister(OEBaseDataIter)

class OEParameterIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEParameter)> 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<(OESystem::OEParameter)> self) -> OEParameterIter
        __init__(OESystem::OEIter<(OESystem::OEParameter)> self, OEParameterIter rhs) -> OEParameterIter
        __init__(OESystem::OEIter<(OESystem::OEParameter)> self, OESystem::OEIterBase< OESystem::OEParameter > * rhs) -> OEParameterIter
        __init__(OESystem::OEIter<(OESystem::OEParameter)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEParameter >::NonConstA > * rhs) -> OEParameterIter
        """
        this = _oechem.new_OEParameterIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEParameterIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEParameter > *":
        """Copy(OEParameterIter self) -> OESystem::OEIterBase< OESystem::OEParameter > *"""
        return _oechem.OEParameterIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEParameterIter self, OESystem::OEIterBase< OESystem::OEParameter > * ib)
        Push(OEParameterIter self, OEParameterIter iter)
        """
        return _oechem.OEParameterIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEParameter,OESystem::OEParameter > const &') -> "void":
        """Sort(OEParameterIter self, OESystem::OEBinaryPredicate< OESystem::OEParameter,OESystem::OEParameter > const & sort_criterion)"""
        return _oechem.OEParameterIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """ToFirst(OEParameterIter self) -> OEParameterIter"""
        return _oechem.OEParameterIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """ToLast(OEParameterIter self) -> OEParameterIter"""
        return _oechem.OEParameterIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEParameter &":
        """__ref__(OEParameterIter self) -> OEParameter"""
        return _oechem.OEParameterIter___ref__(self)


    def IsValid(self):
      return _oechem.OEParameterIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEParameterIter self) -> PyObject *"""
        return _oechem.OEParameterIter_next(self)


    def Target(self) -> "OESystem::OEParameter &":
        """Target(OEParameterIter self) -> OEParameter"""
        return _oechem.OEParameterIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """
        Next(OEParameterIter self) -> OEParameterIter
        Next(OEParameterIter self, int i) -> OEParameterIter
        """
        return _oechem.OEParameterIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEParameter > &":
        """
        Prev(OEParameterIter self) -> OEParameterIter
        Prev(OEParameterIter self, int i) -> OEParameterIter
        """
        return _oechem.OEParameterIter_Prev(self, *args)

OEParameterIter_swigregister = _oechem.OEParameterIter_swigregister
OEParameterIter_swigregister(OEParameterIter)

class OEInterfaceIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEInterface)> 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<(OESystem::OEInterface)> self) -> OEInterfaceIter
        __init__(OESystem::OEIter<(OESystem::OEInterface)> self, OEInterfaceIter rhs) -> OEInterfaceIter
        __init__(OESystem::OEIter<(OESystem::OEInterface)> self, OESystem::OEIterBase< OESystem::OEInterface > * rhs) -> OEInterfaceIter
        __init__(OESystem::OEIter<(OESystem::OEInterface)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEInterface >::NonConstA > * rhs) -> OEInterfaceIter
        """
        this = _oechem.new_OEInterfaceIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInterfaceIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEInterface > *":
        """Copy(OEInterfaceIter self) -> OESystem::OEIterBase< OESystem::OEInterface > *"""
        return _oechem.OEInterfaceIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInterfaceIter self, OESystem::OEIterBase< OESystem::OEInterface > * ib)
        Push(OEInterfaceIter self, OEInterfaceIter iter)
        """
        return _oechem.OEInterfaceIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEInterface,OESystem::OEInterface > const &') -> "void":
        """Sort(OEInterfaceIter self, OESystem::OEBinaryPredicate< OESystem::OEInterface,OESystem::OEInterface > const & sort_criterion)"""
        return _oechem.OEInterfaceIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """ToFirst(OEInterfaceIter self) -> OEInterfaceIter"""
        return _oechem.OEInterfaceIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """ToLast(OEInterfaceIter self) -> OEInterfaceIter"""
        return _oechem.OEInterfaceIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEInterface &":
        """__ref__(OEInterfaceIter self) -> OEInterface"""
        return _oechem.OEInterfaceIter___ref__(self)


    def IsValid(self):
      return _oechem.OEInterfaceIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEInterfaceIter self) -> PyObject *"""
        return _oechem.OEInterfaceIter_next(self)


    def Target(self) -> "OESystem::OEInterface &":
        """Target(OEInterfaceIter self) -> OEInterface"""
        return _oechem.OEInterfaceIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """
        Next(OEInterfaceIter self) -> OEInterfaceIter
        Next(OEInterfaceIter self, int i) -> OEInterfaceIter
        """
        return _oechem.OEInterfaceIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEInterface > &":
        """
        Prev(OEInterfaceIter self) -> OEInterfaceIter
        Prev(OEInterfaceIter self, int i) -> OEInterfaceIter
        """
        return _oechem.OEInterfaceIter_Prev(self, *args)

OEInterfaceIter_swigregister = _oechem.OEInterfaceIter_swigregister
OEInterfaceIter_swigregister(OEInterfaceIter)

class OEAltLocationIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEAltLocation)> 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<(OEBio::OEAltLocation)> self) -> OEAltLocationIter
        __init__(OESystem::OEIter<(OEBio::OEAltLocation)> self, OEAltLocationIter rhs) -> OEAltLocationIter
        __init__(OESystem::OEIter<(OEBio::OEAltLocation)> self, OESystem::OEIterBase< OEBio::OEAltLocation > * rhs) -> OEAltLocationIter
        __init__(OESystem::OEIter<(OEBio::OEAltLocation)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEAltLocation >::NonConstA > * rhs) -> OEAltLocationIter
        """
        this = _oechem.new_OEAltLocationIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocationIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEAltLocation > *":
        """Copy(OEAltLocationIter self) -> OESystem::OEIterBase< OEBio::OEAltLocation > *"""
        return _oechem.OEAltLocationIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAltLocationIter self, OESystem::OEIterBase< OEBio::OEAltLocation > * ib)
        Push(OEAltLocationIter self, OEAltLocationIter iter)
        """
        return _oechem.OEAltLocationIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEAltLocation,OEBio::OEAltLocation > const &') -> "void":
        """Sort(OEAltLocationIter self, OESystem::OEBinaryPredicate< OEBio::OEAltLocation,OEBio::OEAltLocation > const & sort_criterion)"""
        return _oechem.OEAltLocationIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """ToFirst(OEAltLocationIter self) -> OEAltLocationIter"""
        return _oechem.OEAltLocationIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """ToLast(OEAltLocationIter self) -> OEAltLocationIter"""
        return _oechem.OEAltLocationIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEAltLocation &":
        """__ref__(OEAltLocationIter self) -> OEAltLocation"""
        return _oechem.OEAltLocationIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAltLocationIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAltLocationIter self) -> PyObject *"""
        return _oechem.OEAltLocationIter_next(self)


    def Target(self) -> "OEBio::OEAltLocation &":
        """Target(OEAltLocationIter self) -> OEAltLocation"""
        return _oechem.OEAltLocationIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """
        Next(OEAltLocationIter self) -> OEAltLocationIter
        Next(OEAltLocationIter self, int i) -> OEAltLocationIter
        """
        return _oechem.OEAltLocationIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEAltLocation > &":
        """
        Prev(OEAltLocationIter self) -> OEAltLocationIter
        Prev(OEAltLocationIter self, int i) -> OEAltLocationIter
        """
        return _oechem.OEAltLocationIter_Prev(self, *args)

OEAltLocationIter_swigregister = _oechem.OEAltLocationIter_swigregister
OEAltLocationIter_swigregister(OEAltLocationIter)

class OEAltGroupIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEAltGroup)> 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<(OEBio::OEAltGroup)> self) -> OEAltGroupIter
        __init__(OESystem::OEIter<(OEBio::OEAltGroup)> self, OEAltGroupIter rhs) -> OEAltGroupIter
        __init__(OESystem::OEIter<(OEBio::OEAltGroup)> self, OESystem::OEIterBase< OEBio::OEAltGroup > * rhs) -> OEAltGroupIter
        __init__(OESystem::OEIter<(OEBio::OEAltGroup)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEAltGroup >::NonConstA > * rhs) -> OEAltGroupIter
        """
        this = _oechem.new_OEAltGroupIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltGroupIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEAltGroup > *":
        """Copy(OEAltGroupIter self) -> OESystem::OEIterBase< OEBio::OEAltGroup > *"""
        return _oechem.OEAltGroupIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAltGroupIter self, OESystem::OEIterBase< OEBio::OEAltGroup > * ib)
        Push(OEAltGroupIter self, OEAltGroupIter iter)
        """
        return _oechem.OEAltGroupIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEAltGroup,OEBio::OEAltGroup > const &') -> "void":
        """Sort(OEAltGroupIter self, OESystem::OEBinaryPredicate< OEBio::OEAltGroup,OEBio::OEAltGroup > const & sort_criterion)"""
        return _oechem.OEAltGroupIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """ToFirst(OEAltGroupIter self) -> OEAltGroupIter"""
        return _oechem.OEAltGroupIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """ToLast(OEAltGroupIter self) -> OEAltGroupIter"""
        return _oechem.OEAltGroupIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEAltGroup &":
        """__ref__(OEAltGroupIter self) -> OEAltGroup"""
        return _oechem.OEAltGroupIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAltGroupIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAltGroupIter self) -> PyObject *"""
        return _oechem.OEAltGroupIter_next(self)


    def Target(self) -> "OEBio::OEAltGroup &":
        """Target(OEAltGroupIter self) -> OEAltGroup"""
        return _oechem.OEAltGroupIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """
        Next(OEAltGroupIter self) -> OEAltGroupIter
        Next(OEAltGroupIter self, int i) -> OEAltGroupIter
        """
        return _oechem.OEAltGroupIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEAltGroup > &":
        """
        Prev(OEAltGroupIter self) -> OEAltGroupIter
        Prev(OEAltGroupIter self, int i) -> OEAltGroupIter
        """
        return _oechem.OEAltGroupIter_Prev(self, *args)

OEAltGroupIter_swigregister = _oechem.OEAltGroupIter_swigregister
OEAltGroupIter_swigregister(OEAltGroupIter)

class OESequenceAlignmentIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OESequenceAlignment)> 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<(OEBio::OESequenceAlignment)> self) -> OESequenceAlignmentIter
        __init__(OESystem::OEIter<(OEBio::OESequenceAlignment)> self, OESequenceAlignmentIter rhs) -> OESequenceAlignmentIter
        __init__(OESystem::OEIter<(OEBio::OESequenceAlignment)> self, OESystem::OEIterBase< OEBio::OESequenceAlignment > * rhs) -> OESequenceAlignmentIter
        __init__(OESystem::OEIter<(OEBio::OESequenceAlignment)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OESequenceAlignment >::NonConstA > * rhs) -> OESequenceAlignmentIter
        """
        this = _oechem.new_OESequenceAlignmentIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESequenceAlignmentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OESequenceAlignment > *":
        """Copy(OESequenceAlignmentIter self) -> OESystem::OEIterBase< OEBio::OESequenceAlignment > *"""
        return _oechem.OESequenceAlignmentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESequenceAlignmentIter self, OESystem::OEIterBase< OEBio::OESequenceAlignment > * ib)
        Push(OESequenceAlignmentIter self, OESequenceAlignmentIter iter)
        """
        return _oechem.OESequenceAlignmentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OESequenceAlignment,OEBio::OESequenceAlignment > const &') -> "void":
        """Sort(OESequenceAlignmentIter self, OESystem::OEBinaryPredicate< OEBio::OESequenceAlignment,OEBio::OESequenceAlignment > const & sort_criterion)"""
        return _oechem.OESequenceAlignmentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """ToFirst(OESequenceAlignmentIter self) -> OESequenceAlignmentIter"""
        return _oechem.OESequenceAlignmentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """ToLast(OESequenceAlignmentIter self) -> OESequenceAlignmentIter"""
        return _oechem.OESequenceAlignmentIter_ToLast(self)


    def __ref__(self) -> "OEBio::OESequenceAlignment &":
        """__ref__(OESequenceAlignmentIter self) -> OESequenceAlignment"""
        return _oechem.OESequenceAlignmentIter___ref__(self)


    def IsValid(self):
      return _oechem.OESequenceAlignmentIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESequenceAlignmentIter self) -> PyObject *"""
        return _oechem.OESequenceAlignmentIter_next(self)


    def Target(self) -> "OEBio::OESequenceAlignment &":
        """Target(OESequenceAlignmentIter self) -> OESequenceAlignment"""
        return _oechem.OESequenceAlignmentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """
        Next(OESequenceAlignmentIter self) -> OESequenceAlignmentIter
        Next(OESequenceAlignmentIter self, int i) -> OESequenceAlignmentIter
        """
        return _oechem.OESequenceAlignmentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OESequenceAlignment > &":
        """
        Prev(OESequenceAlignmentIter self) -> OESequenceAlignmentIter
        Prev(OESequenceAlignmentIter self, int i) -> OESequenceAlignmentIter
        """
        return _oechem.OESequenceAlignmentIter_Prev(self, *args)

OESequenceAlignmentIter_swigregister = _oechem.OESequenceAlignmentIter_swigregister
OESequenceAlignmentIter_swigregister(OESequenceAlignmentIter)

class OEResidueIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEResidue)> 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::OEResidue)> self) -> OEResidueIter
        __init__(OESystem::OEIter<(OEChem::OEResidue)> self, OEResidueIter rhs) -> OEResidueIter
        __init__(OESystem::OEIter<(OEChem::OEResidue)> self, OESystem::OEIterBase< OEChem::OEResidue > * rhs) -> OEResidueIter
        __init__(OESystem::OEIter<(OEChem::OEResidue)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEResidue >::NonConstA > * rhs) -> OEResidueIter
        """
        this = _oechem.new_OEResidueIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEResidueIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEResidue > *":
        """Copy(OEResidueIter self) -> OESystem::OEIterBase< OEChem::OEResidue > *"""
        return _oechem.OEResidueIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEResidueIter self, OESystem::OEIterBase< OEChem::OEResidue > * ib)
        Push(OEResidueIter self, OEResidueIter iter)
        """
        return _oechem.OEResidueIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEResidue,OEChem::OEResidue > const &') -> "void":
        """Sort(OEResidueIter self, OESystem::OEBinaryPredicate< OEChem::OEResidue,OEChem::OEResidue > const & sort_criterion)"""
        return _oechem.OEResidueIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """ToFirst(OEResidueIter self) -> OEResidueIter"""
        return _oechem.OEResidueIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """ToLast(OEResidueIter self) -> OEResidueIter"""
        return _oechem.OEResidueIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEResidue &":
        """__ref__(OEResidueIter self) -> OEResidue"""
        return _oechem.OEResidueIter___ref__(self)


    def IsValid(self):
      return _oechem.OEResidueIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEResidueIter self) -> PyObject *"""
        return _oechem.OEResidueIter_next(self)


    def Target(self) -> "OEChem::OEResidue &":
        """Target(OEResidueIter self) -> OEResidue"""
        return _oechem.OEResidueIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """
        Next(OEResidueIter self) -> OEResidueIter
        Next(OEResidueIter self, int i) -> OEResidueIter
        """
        return _oechem.OEResidueIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEResidue > &":
        """
        Prev(OEResidueIter self) -> OEResidueIter
        Prev(OEResidueIter self, int i) -> OEResidueIter
        """
        return _oechem.OEResidueIter_Prev(self, *args)

OEResidueIter_swigregister = _oechem.OEResidueIter_swigregister
OEResidueIter_swigregister(OEResidueIter)

class OEConstStringIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).std::string)> 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).std::string)> self) -> OEConstStringIter
        __init__(OESystem::OEIter<(q(const).std::string)> self, OEConstStringIter rhs) -> OEConstStringIter
        __init__(OESystem::OEIter<(q(const).std::string)> self, OESystem::OEIterBase< std::string const > * rhs) -> OEConstStringIter
        __init__(OESystem::OEIter<(q(const).std::string)> self, OESystem::OEIterBase< OESystem::OEIter< std::string const >::NonConstA > * rhs) -> OEConstStringIter
        """
        this = _oechem.new_OEConstStringIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConstStringIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< std::string const > *":
        """Copy(OEConstStringIter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEConstStringIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConstStringIter self, OESystem::OEIterBase< std::string const > * ib)
        Push(OEConstStringIter self, OEConstStringIter iter)
        """
        return _oechem.OEConstStringIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< std::string const,std::string const > const &') -> "void":
        """Sort(OEConstStringIter self, OESystem::OEBinaryPredicate< std::string const,std::string const > const & sort_criterion)"""
        return _oechem.OEConstStringIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< std::string const > &":
        """ToFirst(OEConstStringIter self) -> OEConstStringIter"""
        return _oechem.OEConstStringIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< std::string const > &":
        """ToLast(OEConstStringIter self) -> OEConstStringIter"""
        return _oechem.OEConstStringIter_ToLast(self)


    def __ref__(self) -> "std::string const &":
        """__ref__(OEConstStringIter self) -> std::string const &"""
        return _oechem.OEConstStringIter___ref__(self)


    def IsValid(self):
      return _oechem.OEConstStringIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConstStringIter self) -> PyObject *"""
        return _oechem.OEConstStringIter_next(self)


    def Target(self) -> "std::string const &":
        """Target(OEConstStringIter self) -> std::string const &"""
        return _oechem.OEConstStringIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< std::string const > &":
        """
        Next(OEConstStringIter self) -> OEConstStringIter
        Next(OEConstStringIter self, int i) -> OEConstStringIter
        """
        return _oechem.OEConstStringIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< std::string const > &":
        """
        Prev(OEConstStringIter self) -> OEConstStringIter
        Prev(OEConstStringIter self, int i) -> OEConstStringIter
        """
        return _oechem.OEConstStringIter_Prev(self, *args)

OEConstStringIter_swigregister = _oechem.OEConstStringIter_swigregister
OEConstStringIter_swigregister(OEConstStringIter)

class OEStringIter(object):
    """Proxy of C++ OESystem::OEIter<(std::string)> 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<(std::string)> self) -> OEStringIter
        __init__(OESystem::OEIter<(std::string)> self, OEStringIter rhs) -> OEStringIter
        __init__(OESystem::OEIter<(std::string)> self, OESystem::OEIterBase< std::string > * rhs) -> OEStringIter
        __init__(OESystem::OEIter<(std::string)> self, OESystem::OEIterBase< OESystem::OEIter< std::string >::NonConstA > * rhs) -> OEStringIter
        """
        this = _oechem.new_OEStringIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEStringIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< std::string > *":
        """Copy(OEStringIter self) -> OESystem::OEIterBase< std::string > *"""
        return _oechem.OEStringIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEStringIter self, OESystem::OEIterBase< std::string > * ib)
        Push(OEStringIter self, OEStringIter iter)
        """
        return _oechem.OEStringIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< std::string,std::string > const &') -> "void":
        """Sort(OEStringIter self, OESystem::OEBinaryPredicate< std::string,std::string > const & sort_criterion)"""
        return _oechem.OEStringIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< std::string > &":
        """ToFirst(OEStringIter self) -> OEStringIter"""
        return _oechem.OEStringIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< std::string > &":
        """ToLast(OEStringIter self) -> OEStringIter"""
        return _oechem.OEStringIter_ToLast(self)


    def __ref__(self) -> "std::string &":
        """__ref__(OEStringIter self) -> std::string &"""
        return _oechem.OEStringIter___ref__(self)


    def IsValid(self):
      return _oechem.OEStringIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEStringIter self) -> PyObject *"""
        return _oechem.OEStringIter_next(self)


    def Target(self) -> "std::string &":
        """Target(OEStringIter self) -> std::string &"""
        return _oechem.OEStringIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< std::string > &":
        """
        Next(OEStringIter self) -> OEStringIter
        Next(OEStringIter self, int i) -> OEStringIter
        """
        return _oechem.OEStringIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< std::string > &":
        """
        Prev(OEStringIter self) -> OEStringIter
        Prev(OEStringIter self, int i) -> OEStringIter
        """
        return _oechem.OEStringIter_Prev(self, *args)

OEStringIter_swigregister = _oechem.OEStringIter_swigregister
OEStringIter_swigregister(OEStringIter)


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

OEConstStringIter.__iter__ = str_iter
OEStringIter.__iter__ = str_iter

del str_iter


def OEClearAromaticFlags(mol: 'OEMolBase') -> "void":
    """OEClearAromaticFlags(OEMolBase mol)"""
    return _oechem.OEClearAromaticFlags(mol)

def OEAssignAromaticFlags(*args) -> "void":
    """
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel, bool clearflags=True, unsigned int maxpath=0, bool prune=False)
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel, bool clearflags=True, unsigned int maxpath=0)
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel, bool clearflags=True)
    OEAssignAromaticFlags(OEMolBase mol, unsigned int aromodel)
    OEAssignAromaticFlags(OEMolBase mol)
    """
    return _oechem.OEAssignAromaticFlags(*args)

def OEExactGraphMatch(mol1: 'OEMolBase', mol2: 'OEMolBase') -> "bool":
    """OEExactGraphMatch(OEMolBase mol1, OEMolBase mol2) -> bool"""
    return _oechem.OEExactGraphMatch(mol1, mol2)

def OECanonicalOrderAtoms(mol: 'OEMolBase') -> "void":
    """OECanonicalOrderAtoms(OEMolBase mol)"""
    return _oechem.OECanonicalOrderAtoms(mol)

def OECanonicalOrderBonds(mol: 'OEMolBase') -> "void":
    """OECanonicalOrderBonds(OEMolBase mol)"""
    return _oechem.OECanonicalOrderBonds(mol)

def OEClearPartialCharges(mol: 'OEMolBase') -> "void":
    """OEClearPartialCharges(OEMolBase mol)"""
    return _oechem.OEClearPartialCharges(mol)

def OEFormalPartialCharges(mol: 'OEMolBase') -> "void":
    """OEFormalPartialCharges(OEMolBase mol)"""
    return _oechem.OEFormalPartialCharges(mol)

def OEHasPartialCharges(mol: 'OEMolBase') -> "bool":
    """OEHasPartialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEHasPartialCharges(mol)

def OENetCharge(mol: 'OEMolBase') -> "int":
    """OENetCharge(OEMolBase mol) -> int"""
    return _oechem.OENetCharge(mol)

def OEGasteigerInitialCharges(mol: 'OEMolBase') -> "bool":
    """OEGasteigerInitialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEGasteigerInitialCharges(mol)

def OEGasteigerPartialCharges(mol: 'OEMolBase') -> "bool":
    """OEGasteigerPartialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEGasteigerPartialCharges(mol)

def OEAssignFormalCharges(*args) -> "void":
    """
    OEAssignFormalCharges(OEAtomBase atm)
    OEAssignFormalCharges(OEMolBase mol)
    """
    return _oechem.OEAssignFormalCharges(*args)

def OEPerceiveCIPStereo(*args) -> "unsigned int":
    """
    OEPerceiveCIPStereo(OEMolBase mol, OEAtomBase atom) -> unsigned int
    OEPerceiveCIPStereo(OEMolBase mol, OEBondBase bond) -> unsigned int
    """
    return _oechem.OEPerceiveCIPStereo(*args)

def OESetCIPStereo(*args) -> "bool":
    """
    OESetCIPStereo(OEMolBase mol, OEAtomBase atom, unsigned int cipstereo) -> bool
    OESetCIPStereo(OEMolBase mol, OEBondBase bond, unsigned int cipstereo) -> bool
    """
    return _oechem.OESetCIPStereo(*args)

def OEGetComment(mol: 'OEMolBase') -> "char const *":
    """OEGetComment(OEMolBase mol) -> char const *"""
    return _oechem.OEGetComment(mol)

def OESetComment(mol: 'OEMolBase', c: 'char const *') -> "void":
    """OESetComment(OEMolBase mol, char const * c)"""
    return _oechem.OESetComment(mol, c)

def OEGetAtomComment(atm: 'OEAtomBase') -> "char const *":
    """OEGetAtomComment(OEAtomBase atm) -> char const *"""
    return _oechem.OEGetAtomComment(atm)

def OESetAtomComment(atm: 'OEAtomBase', c: 'char const *') -> "void":
    """OESetAtomComment(OEAtomBase atm, char const * c)"""
    return _oechem.OESetAtomComment(atm, c)

def OEDetermineConnectivity(mol: 'OEMolBase', same_altloc: 'bool'=True) -> "void":
    """
    OEDetermineConnectivity(OEMolBase mol, bool same_altloc=True)
    OEDetermineConnectivity(OEMolBase mol)
    """
    return _oechem.OEDetermineConnectivity(mol, same_altloc)

def OEPerceiveBondOrders(mol: 'OEMolBase') -> "void":
    """OEPerceiveBondOrders(OEMolBase mol)"""
    return _oechem.OEPerceiveBondOrders(mol)
class OENbrs(object):
    """Proxy of C++ OEChem::OENbrs 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, b: 'OEAtomBase', e: 'OEAtomBase', d: 'double'):
        """__init__(OEChem::OENbrs self, OEAtomBase b, OEAtomBase e, double d) -> OENbrs"""
        this = _oechem.new_OENbrs(b, e, d)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetBgn(self) -> "OEChem::OEAtomBase const *":
        """GetBgn(OENbrs self) -> OEAtomBase"""
        return _oechem.OENbrs_GetBgn(self)


    def GetEnd(self) -> "OEChem::OEAtomBase const *":
        """GetEnd(OENbrs self) -> OEAtomBase"""
        return _oechem.OENbrs_GetEnd(self)


    def GetDist2(self) -> "double":
        """GetDist2(OENbrs self) -> double"""
        return _oechem.OENbrs_GetDist2(self)


    def GetDist(self) -> "double":
        """GetDist(OENbrs self) -> double"""
        return _oechem.OENbrs_GetDist(self)

    bgn = _swig_property(_oechem.OENbrs_bgn_get, _oechem.OENbrs_bgn_set)
    end = _swig_property(_oechem.OENbrs_end_get, _oechem.OENbrs_end_set)
    dist2 = _swig_property(_oechem.OENbrs_dist2_get, _oechem.OENbrs_dist2_set)
    __swig_destroy__ = _oechem.delete_OENbrs
    __del__ = lambda self: None
OENbrs_swigregister = _oechem.OENbrs_swigregister
OENbrs_swigregister(OENbrs)
OEAroModelUndefined = cvar.OEAroModelUndefined
OEAroModelDaylight = cvar.OEAroModelDaylight
OEAroModelOpenEye = cvar.OEAroModelOpenEye
OEAroModelTripos = cvar.OEAroModelTripos
OEAroModelMMFF = cvar.OEAroModelMMFF
OEAroModelMDL = cvar.OEAroModelMDL


def OEGetNearestNbrs(*args) -> "OESystem::OEIterBase< OEChem::OENbrs > *":
    """
    OEGetNearestNbrs(OEMolBase mol, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, OEAtomBase atom, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, OEAtomBase atom, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, float const * coords, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, float const * coords, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, double const * coords, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol, double const * coords, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol1, OEMolBase mol2, double maxdist, unsigned int method) -> OESystem::OEIterBase< OEChem::OENbrs >
    OEGetNearestNbrs(OEMolBase mol1, OEMolBase mol2, double maxdist) -> OESystem::OEIterBase< OEChem::OENbrs > *
    """
    return _oechem.OEGetNearestNbrs(*args)
class OENearestNbrs(object):
    """Proxy of C++ OEChem::OENearestNbrs 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__(OEChem::OENearestNbrs self, OEMolBase mol, double maxdist, unsigned int method) -> OENearestNbrs
        __init__(OEChem::OENearestNbrs self, OEMolBase mol, double maxdist) -> OENearestNbrs
        """
        this = _oechem.new_OENearestNbrs(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OENearestNbrs
    __del__ = lambda self: None

    def GetNbrs(self, *args) -> "OESystem::OEIterBase< OEChem::OENbrs > *":
        """
        GetNbrs(OENearestNbrs self, OEMolBase mol) -> OESystem::OEIterBase< OEChem::OENbrs >
        GetNbrs(OENearestNbrs self, OEAtomBase atom) -> OESystem::OEIterBase< OEChem::OENbrs >
        GetNbrs(OENearestNbrs self, float const * coords) -> OESystem::OEIterBase< OEChem::OENbrs > *
        """
        return _oechem.OENearestNbrs_GetNbrs(self, *args)

OENearestNbrs_swigregister = _oechem.OENearestNbrs_swigregister
OENearestNbrs_swigregister(OENearestNbrs)

class OEMolDBException(object):
    """Proxy of C++ OEChem::OEMolDBException 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, msg: 'std::string const &'):
        """__init__(OEChem::OEMolDBException self, std::string const & msg) -> OEMolDBException"""
        this = _oechem.new_OEMolDBException(msg)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolDBException
    __del__ = lambda self: None

    def what(self) -> "char const *":
        """what(OEMolDBException self) -> char const *"""
        return _oechem.OEMolDBException_what(self)

OEMolDBException_swigregister = _oechem.OEMolDBException_swigregister
OEMolDBException_swigregister(OEMolDBException)

class OEMolDatabaseSaveOptions(object):
    """Proxy of C++ OEChem::OEMolDatabaseSaveOptions 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__(OEChem::OEMolDatabaseSaveOptions self) -> OEMolDatabaseSaveOptions
        __init__(OEChem::OEMolDatabaseSaveOptions self, unsigned int format, unsigned int flavor, bool writeIdx, std::string const & idxFileName) -> OEMolDatabaseSaveOptions
        """
        this = _oechem.new_OEMolDatabaseSaveOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetFormat(self) -> "unsigned int":
        """GetFormat(OEMolDatabaseSaveOptions self) -> unsigned int"""
        return _oechem.OEMolDatabaseSaveOptions_GetFormat(self)


    def SetFormat(self, fmt: 'unsigned int') -> "void":
        """SetFormat(OEMolDatabaseSaveOptions self, unsigned int fmt)"""
        return _oechem.OEMolDatabaseSaveOptions_SetFormat(self, fmt)


    def GetFlavor(self) -> "unsigned int":
        """GetFlavor(OEMolDatabaseSaveOptions self) -> unsigned int"""
        return _oechem.OEMolDatabaseSaveOptions_GetFlavor(self)


    def SetFlavor(self, flvr: 'unsigned int') -> "void":
        """SetFlavor(OEMolDatabaseSaveOptions self, unsigned int flvr)"""
        return _oechem.OEMolDatabaseSaveOptions_SetFlavor(self, flvr)


    def GetWriteIdx(self) -> "bool":
        """GetWriteIdx(OEMolDatabaseSaveOptions self) -> bool"""
        return _oechem.OEMolDatabaseSaveOptions_GetWriteIdx(self)


    def SetWriteIdx(self, w: 'bool') -> "void":
        """SetWriteIdx(OEMolDatabaseSaveOptions self, bool w)"""
        return _oechem.OEMolDatabaseSaveOptions_SetWriteIdx(self, w)


    def GetIdxFileName(self) -> "std::string const &":
        """GetIdxFileName(OEMolDatabaseSaveOptions self) -> std::string const &"""
        return _oechem.OEMolDatabaseSaveOptions_GetIdxFileName(self)


    def SetIdxFileName(self, f: 'std::string const &') -> "void":
        """SetIdxFileName(OEMolDatabaseSaveOptions self, std::string const & f)"""
        return _oechem.OEMolDatabaseSaveOptions_SetIdxFileName(self, f)

    __swig_destroy__ = _oechem.delete_OEMolDatabaseSaveOptions
    __del__ = lambda self: None
OEMolDatabaseSaveOptions_swigregister = _oechem.OEMolDatabaseSaveOptions_swigregister
OEMolDatabaseSaveOptions_swigregister(OEMolDatabaseSaveOptions)

class OEMolDatabase(OEBase):
    """Proxy of C++ OEChem::OEMolDatabase class."""

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

    def GetImpl(self, *args) -> "OEChem::OEMolDatabaseImpl &":
        """
        GetImpl(OEMolDatabase self) -> OEChem::OEMolDatabaseImpl const
        GetImpl(OEMolDatabase self) -> OEChem::OEMolDatabaseImpl &
        """
        return _oechem.OEMolDatabase_GetImpl(self, *args)


    def __init__(self, *args):
        """
        __init__(OEChem::OEMolDatabase self) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, std::string const & filename) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, std::string const & filename, unsigned int format) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, std::string const & filename, unsigned int format, unsigned int flavor) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, oemolistream ifs) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, oeistream istr, unsigned int format) -> OEMolDatabase
        __init__(OEChem::OEMolDatabase self, oeistream istr, unsigned int format, unsigned int flavor) -> OEMolDatabase
        """
        this = _oechem.new_OEMolDatabase(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolDatabase
    __del__ = lambda self: None

    def Open(self, *args) -> "bool":
        """
        Open(OEMolDatabase self, std::string const & filename) -> bool
        Open(OEMolDatabase self, std::string const & filename, unsigned int format) -> bool
        Open(OEMolDatabase self, std::string const & filename, unsigned int format, unsigned int flavor) -> bool
        Open(OEMolDatabase self, oemolistream ifs) -> bool
        Open(OEMolDatabase self, oeistream istr, unsigned int format) -> bool
        Open(OEMolDatabase self, oeistream istr, unsigned int format, unsigned int flavor) -> bool
        """
        return _oechem.OEMolDatabase_Open(self, *args)


    def Save(self, *args) -> "bool":
        """
        Save(OEMolDatabase self, std::string const & filename, OEMolDatabaseSaveOptions opts) -> bool
        Save(OEMolDatabase self, std::string const & filename) -> bool
        Save(OEMolDatabase self, std::string const & filename, unsigned int format) -> bool
        Save(OEMolDatabase self, std::string const & filename, unsigned int format, unsigned int flavor) -> bool
        Save(OEMolDatabase self, oemolostream ofs, OEMolDatabaseSaveOptions opts) -> bool
        Save(OEMolDatabase self, oemolostream ofs) -> bool
        Save(OEMolDatabase self, oeostream ostr, unsigned int format) -> bool
        Save(OEMolDatabase self, oeostream ostr, unsigned int format, unsigned int flavor) -> bool
        """
        return _oechem.OEMolDatabase_Save(self, *args)


    def GetFormat(self) -> "unsigned int":
        """GetFormat(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_GetFormat(self)


    def GetFlavor(self) -> "unsigned int":
        """GetFlavor(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_GetFlavor(self)


    def GetMoleculeString(self, idx: 'unsigned int') -> "std::string":
        """GetMoleculeString(OEMolDatabase self, unsigned int idx) -> std::string"""
        return _oechem.OEMolDatabase_GetMoleculeString(self, idx)


    def GetMolecule(self, *args) -> "bool":
        """
        GetMolecule(OEMolDatabase self, OEMolBase mol, unsigned int idx) -> bool
        GetMolecule(OEMolDatabase self, OEMCMolBase mol, unsigned int idx) -> bool
        GetMolecule(OEMolDatabase self, oemolostream ofs, unsigned int idx) -> bool
        """
        return _oechem.OEMolDatabase_GetMolecule(self, *args)


    def WriteMolecule(self, ofs: 'oemolostream', idx: 'unsigned int') -> "bool":
        """WriteMolecule(OEMolDatabase self, oemolostream ofs, unsigned int idx) -> bool"""
        return _oechem.OEMolDatabase_WriteMolecule(self, ofs, idx)


    def GetMoleculeOffset(self, idx: 'unsigned int') -> "oefpos_t":
        """GetMoleculeOffset(OEMolDatabase self, unsigned int idx) -> oefpos_t"""
        return _oechem.OEMolDatabase_GetMoleculeOffset(self, idx)


    def GetMoleculeSize(self, idx: 'unsigned int') -> "oefpos_t":
        """GetMoleculeSize(OEMolDatabase self, unsigned int idx) -> oefpos_t"""
        return _oechem.OEMolDatabase_GetMoleculeSize(self, idx)


    def GetTitle(self, idx: 'unsigned int') -> "std::string":
        """GetTitle(OEMolDatabase self, unsigned int idx) -> std::string"""
        return _oechem.OEMolDatabase_GetTitle(self, idx)


    def GetTitles(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetTitles(OEMolDatabase self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEMolDatabase_GetTitles(self)


    def Order(self, indices: 'OEUIntVector') -> "bool":
        """Order(OEMolDatabase self, OEUIntVector indices) -> bool"""
        return _oechem.OEMolDatabase_Order(self, indices)


    def Delete(self, *args) -> "bool":
        """
        Delete(OEMolDatabase self, unsigned int idx) -> bool
        Delete(OEMolDatabase self, OEUnaryMolBasePred pred) -> bool
        Delete(OEMolDatabase self, OESystem::OEUnaryPredicate< OEChem::OEMCMolBase > const & pred) -> bool
        Delete(OEMolDatabase self, OEUIntVector indices) -> bool
        """
        return _oechem.OEMolDatabase_Delete(self, *args)


    def IsDeleted(self, idx: 'unsigned int') -> "bool":
        """IsDeleted(OEMolDatabase self, unsigned int idx) -> bool"""
        return _oechem.OEMolDatabase_IsDeleted(self, idx)

    InvalidIdx = _oechem.OEMolDatabase_InvalidIdx

    def GetMaxMolIdx(self) -> "unsigned int":
        """GetMaxMolIdx(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_GetMaxMolIdx(self)


    def NumMols(self) -> "unsigned int":
        """NumMols(OEMolDatabase self) -> unsigned int"""
        return _oechem.OEMolDatabase_NumMols(self)


    def GetIdxs(self, *args) -> "bool":
        """
        GetIdxs(OEMolDatabase self) -> OESystem::OEIterBase< unsigned int >
        GetIdxs(OEMolDatabase self, OEUIntVector indices) -> bool
        """
        return _oechem.OEMolDatabase_GetIdxs(self, *args)


    def GetIdx(self, row: 'unsigned int') -> "unsigned int":
        """GetIdx(OEMolDatabase self, unsigned int row) -> unsigned int"""
        return _oechem.OEMolDatabase_GetIdx(self, row)


    def GetRow(self, idx: 'unsigned int') -> "unsigned int":
        """GetRow(OEMolDatabase self, unsigned int idx) -> unsigned int"""
        return _oechem.OEMolDatabase_GetRow(self, idx)


    def Clear(self) -> "void":
        """Clear(OEMolDatabase self)"""
        return _oechem.OEMolDatabase_Clear(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMolDatabase self) -> void const *"""
        return _oechem.OEMolDatabase_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEMolDatabase self, void const * arg2) -> bool"""
        return _oechem.OEMolDatabase_IsDataType(self, arg2)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMolDatabase self) -> OEBase"""
        return _oechem.OEMolDatabase_CreateCopy(self)


    def GetOEGraphMols(self):
        for idx in self.GetIdxs():
            mol = OEGraphMol()
            if self.GetMolecule(mol, idx):
                yield mol



    def GetOEMols(self):
        for idx in self.GetIdxs():
            mol = OEMol()
            if self.GetMolecule(mol, idx):
                yield mol


OEMolDatabase_swigregister = _oechem.OEMolDatabase_swigregister
OEMolDatabase_swigregister(OEMolDatabase)


def OEHasMolDBIdx(mol: 'OEBase') -> "bool":
    """OEHasMolDBIdx(OEBase mol) -> bool"""
    return _oechem.OEHasMolDBIdx(mol)

def OEGetMolDBIdx(mol: 'OEBase') -> "unsigned int":
    """OEGetMolDBIdx(OEBase mol) -> unsigned int"""
    return _oechem.OEGetMolDBIdx(mol)

def OECreateMolDatabaseIdx(*args) -> "bool":
    """
    OECreateMolDatabaseIdx(std::string const & databaseFileName) -> bool
    OECreateMolDatabaseIdx(std::string const & databaseFileName, std::string const & indexFileName) -> bool
    """
    return _oechem.OECreateMolDatabaseIdx(*args)

def OEGetMolDatabaseIdxFileName(databaseFileName: 'std::string const &') -> "std::string":
    """OEGetMolDatabaseIdxFileName(std::string const & databaseFileName) -> std::string"""
    return _oechem.OEGetMolDatabaseIdxFileName(databaseFileName)
class OEConfTestBase(object):
    """Proxy of C++ OEChem::OEConfTestBase 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 CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEConfTestBase self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEConfTestBase_CompareMols(self, m1, m2)


    def HasCompareMols(self) -> "bool":
        """HasCompareMols(OEConfTestBase self) -> bool"""
        return _oechem.OEConfTestBase_HasCompareMols(self)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEConfTestBase self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEConfTestBase_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEConfTestBase self) -> OEConfTestBase"""
        return _oechem.OEConfTestBase_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEConfTestBase
    __del__ = lambda self: None
OEConfTestBase_swigregister = _oechem.OEConfTestBase_swigregister
OEConfTestBase_swigregister(OEConfTestBase)

class OEDefaultConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEDefaultConfTest class."""

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

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEDefaultConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEDefaultConfTest_CompareMols(self, m1, m2)


    def HasCompareMols(self) -> "bool":
        """HasCompareMols(OEDefaultConfTest self) -> bool"""
        return _oechem.OEDefaultConfTest_HasCompareMols(self)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEDefaultConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEDefaultConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEDefaultConfTest self) -> OEConfTestBase"""
        return _oechem.OEDefaultConfTest_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEDefaultConfTest self) -> OEDefaultConfTest"""
        this = _oechem.new_OEDefaultConfTest()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDefaultConfTest
    __del__ = lambda self: None
OEDefaultConfTest_swigregister = _oechem.OEDefaultConfTest_swigregister
OEDefaultConfTest_swigregister(OEDefaultConfTest)

class OEAbsCanonicalConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEAbsCanonicalConfTest class."""

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

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEAbsCanonicalConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsCanonicalConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEAbsCanonicalConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsCanonicalConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEAbsCanonicalConfTest self) -> OEConfTestBase"""
        return _oechem.OEAbsCanonicalConfTest_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEAbsCanonicalConfTest self) -> OEAbsCanonicalConfTest"""
        this = _oechem.new_OEAbsCanonicalConfTest()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAbsCanonicalConfTest
    __del__ = lambda self: None
OEAbsCanonicalConfTest_swigregister = _oechem.OEAbsCanonicalConfTest_swigregister
OEAbsCanonicalConfTest_swigregister(OEAbsCanonicalConfTest)

class OEIsomericConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEIsomericConfTest 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, compTitles: 'bool'=True):
        """
        __init__(OEChem::OEIsomericConfTest self, bool compTitles=True) -> OEIsomericConfTest
        __init__(OEChem::OEIsomericConfTest self) -> OEIsomericConfTest
        """
        this = _oechem.new_OEIsomericConfTest(compTitles)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEIsomericConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEIsomericConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEIsomericConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEIsomericConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEIsomericConfTest self) -> OEConfTestBase"""
        return _oechem.OEIsomericConfTest_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsomericConfTest
    __del__ = lambda self: None
OEIsomericConfTest_swigregister = _oechem.OEIsomericConfTest_swigregister
OEIsomericConfTest_swigregister(OEIsomericConfTest)

class OEOmegaConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEOmegaConfTest 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, compTitles: 'bool'=True):
        """
        __init__(OEChem::OEOmegaConfTest self, bool compTitles=True) -> OEOmegaConfTest
        __init__(OEChem::OEOmegaConfTest self) -> OEOmegaConfTest
        """
        this = _oechem.new_OEOmegaConfTest(compTitles)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEOmegaConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEOmegaConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEOmegaConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEOmegaConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEOmegaConfTest self) -> OEConfTestBase"""
        return _oechem.OEOmegaConfTest_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEOmegaConfTest
    __del__ = lambda self: None
OEOmegaConfTest_swigregister = _oechem.OEOmegaConfTest_swigregister
OEOmegaConfTest_swigregister(OEOmegaConfTest)

class OEAbsoluteConfTest(OEConfTestBase):
    """Proxy of C++ OEChem::OEAbsoluteConfTest 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, compTitles: 'bool'=True):
        """
        __init__(OEChem::OEAbsoluteConfTest self, bool compTitles=True) -> OEAbsoluteConfTest
        __init__(OEChem::OEAbsoluteConfTest self) -> OEAbsoluteConfTest
        """
        this = _oechem.new_OEAbsoluteConfTest(compTitles)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CompareMols(self, m1: 'OEMolBase', m2: 'OEMolBase') -> "bool":
        """CompareMols(OEAbsoluteConfTest self, OEMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsoluteConfTest_CompareMols(self, m1, m2)


    def CombineMols(self, m1: 'OEMCMolBase', m2: 'OEMolBase') -> "bool":
        """CombineMols(OEAbsoluteConfTest self, OEMCMolBase m1, OEMolBase m2) -> bool"""
        return _oechem.OEAbsoluteConfTest_CombineMols(self, m1, m2)


    def CreateCopy(self) -> "OEChem::OEConfTestBase *":
        """CreateCopy(OEAbsoluteConfTest self) -> OEConfTestBase"""
        return _oechem.OEAbsoluteConfTest_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEAbsoluteConfTest
    __del__ = lambda self: None
OEAbsoluteConfTest_swigregister = _oechem.OEAbsoluteConfTest_swigregister
OEAbsoluteConfTest_swigregister(OEAbsoluteConfTest)


def OESortConfsBySDTag(mol: 'OEMCMolBase', sdtag: 'std::string const &', biggerIsBetter: 'bool') -> "bool":
    """OESortConfsBySDTag(OEMCMolBase mol, std::string const & sdtag, bool biggerIsBetter) -> bool"""
    return _oechem.OESortConfsBySDTag(mol, sdtag, biggerIsBetter)

def OESortConfsByTag(mol: 'OEMCMolBase', tag: 'std::string const &', biggerIsBetter: 'bool') -> "bool":
    """OESortConfsByTag(OEMCMolBase mol, std::string const & tag, bool biggerIsBetter) -> bool"""
    return _oechem.OESortConfsByTag(mol, tag, biggerIsBetter)

def OETrimConformers(mol: 'OEMCMolBase', N: 'unsigned int') -> "bool":
    """OETrimConformers(OEMCMolBase mol, unsigned int N) -> bool"""
    return _oechem.OETrimConformers(mol, N)

def OEGetAtomicSymbol(elemno: 'unsigned int') -> "char const *":
    """OEGetAtomicSymbol(unsigned int elemno) -> char const *"""
    return _oechem.OEGetAtomicSymbol(elemno)

def OEGetAtomicNum(sym: 'char const *') -> "unsigned int":
    """OEGetAtomicNum(char const * sym) -> unsigned int"""
    return _oechem.OEGetAtomicNum(sym)

def OEGetDefaultMass(elemno: 'unsigned int') -> "unsigned int":
    """OEGetDefaultMass(unsigned int elemno) -> unsigned int"""
    return _oechem.OEGetDefaultMass(elemno)

def OEGetCovalentRadius(elemno: 'unsigned int') -> "double":
    """OEGetCovalentRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetCovalentRadius(elemno)

def OEGetDelphiRadius(elemno: 'unsigned int') -> "double":
    """OEGetDelphiRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetDelphiRadius(elemno)

def OEGetBondiVdWRadius(elemno: 'unsigned int') -> "double":
    """OEGetBondiVdWRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetBondiVdWRadius(elemno)

def OEGetPaulingVdWRadius(elemno: 'unsigned int') -> "double":
    """OEGetPaulingVdWRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetPaulingVdWRadius(elemno)

def OEGetHonigIonicCavityRadius(elemno: 'unsigned int') -> "double":
    """OEGetHonigIonicCavityRadius(unsigned int elemno) -> double"""
    return _oechem.OEGetHonigIonicCavityRadius(elemno)

def OEAssignCovalentRadii(mol: 'OEMolBase') -> "void":
    """OEAssignCovalentRadii(OEMolBase mol)"""
    return _oechem.OEAssignCovalentRadii(mol)

def OEAssignDelphiRadii(mol: 'OEMolBase') -> "void":
    """OEAssignDelphiRadii(OEMolBase mol)"""
    return _oechem.OEAssignDelphiRadii(mol)

def OEAssignBondiVdWRadii(mol: 'OEMolBase') -> "void":
    """OEAssignBondiVdWRadii(OEMolBase mol)"""
    return _oechem.OEAssignBondiVdWRadii(mol)

def OEAssignPaulingVdWRadii(mol: 'OEMolBase') -> "void":
    """OEAssignPaulingVdWRadii(OEMolBase mol)"""
    return _oechem.OEAssignPaulingVdWRadii(mol)

def OEAssignHonigIonicCavityRadii(mol: 'OEMolBase') -> "void":
    """OEAssignHonigIonicCavityRadii(OEMolBase mol)"""
    return _oechem.OEAssignHonigIonicCavityRadii(mol)

def OEAssignZap9Radii(*args) -> "void":
    """
    OEAssignZap9Radii(OEMolBase mol, unsigned int version)
    OEAssignZap9Radii(OEMolBase mol)
    """
    return _oechem.OEAssignZap9Radii(*args)

def OEAssignZap7Radii(*args) -> "void":
    """
    OEAssignZap7Radii(OEMolBase mol, unsigned int version)
    OEAssignZap7Radii(OEMolBase mol)
    """
    return _oechem.OEAssignZap7Radii(*args)

def OEGetAverageWeight(elemno: 'unsigned int') -> "double":
    """OEGetAverageWeight(unsigned int elemno) -> double"""
    return _oechem.OEGetAverageWeight(elemno)

def OEGetIsotopicWeight(elemno: 'unsigned int', mass: 'unsigned int') -> "double":
    """OEGetIsotopicWeight(unsigned int elemno, unsigned int mass) -> double"""
    return _oechem.OEGetIsotopicWeight(elemno, mass)

def OEIsCommonIsotope(elemno: 'unsigned int', mass: 'unsigned int') -> "bool":
    """OEIsCommonIsotope(unsigned int elemno, unsigned int mass) -> bool"""
    return _oechem.OEIsCommonIsotope(elemno, mass)

def OEGetRadiiTypeName(radiiType: 'unsigned int') -> "char const *":
    """OEGetRadiiTypeName(unsigned int radiiType) -> char const *"""
    return _oechem.OEGetRadiiTypeName(radiiType)

def OEAssignRadii(*args) -> "bool":
    """
    OEAssignRadii(OEMolBase mol, unsigned int molRadiiType, unsigned int ionRadiiType) -> bool
    OEAssignRadii(OEMolBase mol, unsigned int molRadiiType) -> bool
    OEAssignRadii(OEMolBase mol) -> bool
    """
    return _oechem.OEAssignRadii(*args)
class OEDefaultErrorLevel(object):
    """Proxy of C++ OESystem::OEDefaultErrorLevel class."""

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

    def __init__(self):
        """__init__(OESystem::OEDefaultErrorLevel self) -> OEDefaultErrorLevel"""
        this = _oechem.new_OEDefaultErrorLevel()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def SetLevel(self, level: 'unsigned int') -> "void":
        """SetLevel(OEDefaultErrorLevel self, unsigned int level)"""
        return _oechem.OEDefaultErrorLevel_SetLevel(self, level)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OEDefaultErrorLevel self) -> unsigned int"""
        return _oechem.OEDefaultErrorLevel_GetLevel(self)

    __swig_destroy__ = _oechem.delete_OEDefaultErrorLevel
    __del__ = lambda self: None
OEDefaultErrorLevel_swigregister = _oechem.OEDefaultErrorLevel_swigregister
OEDefaultErrorLevel_swigregister(OEDefaultErrorLevel)


def OEErrorLevelToString(level: 'unsigned int') -> "std::string":
    """OEErrorLevelToString(unsigned int level) -> std::string"""
    return _oechem.OEErrorLevelToString(level)
class OEErrorHandlerImplBase(object):
    """Proxy of C++ OESystem::OEErrorHandlerImplBase 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::OEErrorHandlerImplBase self) -> OEErrorHandlerImplBase
        __init__(OESystem::OEErrorHandlerImplBase self, OEErrorHandlerImplBase rhs) -> OEErrorHandlerImplBase
        """
        if self.__class__ == OEErrorHandlerImplBase:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEErrorHandlerImplBase(_self, *args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEErrorHandlerImplBase
    __del__ = lambda self: None

    def SetStrict(self, strict: 'bool') -> "void":
        """SetStrict(OEErrorHandlerImplBase self, bool strict)"""
        return _oechem.OEErrorHandlerImplBase_SetStrict(self, strict)


    def GetStrict(self) -> "bool":
        """GetStrict(OEErrorHandlerImplBase self) -> bool"""
        return _oechem.OEErrorHandlerImplBase_GetStrict(self)


    def SetLevel(self, level: 'unsigned int') -> "void":
        """SetLevel(OEErrorHandlerImplBase self, unsigned int level)"""
        return _oechem.OEErrorHandlerImplBase_SetLevel(self, level)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OEErrorHandlerImplBase self) -> unsigned int"""
        return _oechem.OEErrorHandlerImplBase_GetLevel(self)


    def IncrementCount(self, level: 'unsigned int') -> "void":
        """IncrementCount(OEErrorHandlerImplBase self, unsigned int level)"""
        return _oechem.OEErrorHandlerImplBase_IncrementCount(self, level)


    def Clear(self) -> "void":
        """Clear(OEErrorHandlerImplBase self)"""
        return _oechem.OEErrorHandlerImplBase_Clear(self)


    def Count(self, level: 'unsigned int'=0) -> "unsigned int":
        """
        Count(OEErrorHandlerImplBase self, unsigned int level=0) -> unsigned int
        Count(OEErrorHandlerImplBase self) -> unsigned int
        """
        return _oechem.OEErrorHandlerImplBase_Count(self, level)


    def Msg(self, level: 'unsigned int', arg0: 'std::string const &') -> "void":
        """Msg(OEErrorHandlerImplBase self, unsigned int level, std::string const & arg0)"""
        return _oechem.OEErrorHandlerImplBase_Msg(self, level, arg0)


    def CreateCopy(self) -> "OESystem::OEErrorHandlerImplBase *":
        """CreateCopy(OEErrorHandlerImplBase self) -> OEErrorHandlerImplBase"""
        return _oechem.OEErrorHandlerImplBase_CreateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEErrorHandlerImplBase(self)
        return weakref_proxy(self)
OEErrorHandlerImplBase_swigregister = _oechem.OEErrorHandlerImplBase_swigregister
OEErrorHandlerImplBase_swigregister(OEErrorHandlerImplBase)

class OEErrorHandler(object):
    """Proxy of C++ OESystem::OEErrorHandler 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__ = _oechem.delete_OEErrorHandler
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OESystem::OEErrorHandler self) -> OEErrorHandler
        __init__(OESystem::OEErrorHandler self, OEErrorHandler rhs) -> OEErrorHandler
        """
        this = _oechem.new_OEErrorHandler(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def SetHandlerImpl(self, ptr: 'OEErrorHandlerImplBase', owned: 'bool') -> "void":
        """SetHandlerImpl(OEErrorHandler self, OEErrorHandlerImplBase ptr, bool owned)"""
        return _oechem.OEErrorHandler_SetHandlerImpl(self, ptr, owned)


    def GetHandlerImpl(self) -> "OESystem::OEErrorHandlerImplBase *":
        """GetHandlerImpl(OEErrorHandler self) -> OEErrorHandlerImplBase"""
        return _oechem.OEErrorHandler_GetHandlerImpl(self)


    def SetOutputStream(self, ofs: 'oeostream') -> "void":
        """SetOutputStream(OEErrorHandler self, oeostream ofs)"""
        return _oechem.OEErrorHandler_SetOutputStream(self, ofs)


    def SetStrict(self, strict: 'bool') -> "void":
        """SetStrict(OEErrorHandler self, bool strict)"""
        return _oechem.OEErrorHandler_SetStrict(self, strict)


    def GetStrict(self) -> "bool":
        """GetStrict(OEErrorHandler self) -> bool"""
        return _oechem.OEErrorHandler_GetStrict(self)


    def SetLevel(self, errLevel: 'unsigned int') -> "void":
        """SetLevel(OEErrorHandler self, unsigned int errLevel)"""
        return _oechem.OEErrorHandler_SetLevel(self, errLevel)


    def GetLevel(self) -> "unsigned int":
        """GetLevel(OEErrorHandler self) -> unsigned int"""
        return _oechem.OEErrorHandler_GetLevel(self)


    def Clear(self) -> "void":
        """Clear(OEErrorHandler self)"""
        return _oechem.OEErrorHandler_Clear(self)


    def Count(self, level: 'unsigned int'=0) -> "unsigned int":
        """
        Count(OEErrorHandler self, unsigned int level=0) -> unsigned int
        Count(OEErrorHandler self) -> unsigned int
        """
        return _oechem.OEErrorHandler_Count(self, level)


    def Info(self, arg2: 'std::string const &') -> "void":
        """Info(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Info(self, arg2)


    def Warning(self, arg2: 'std::string const &') -> "void":
        """Warning(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Warning(self, arg2)


    def Error(self, arg2: 'std::string const &') -> "void":
        """Error(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Error(self, arg2)


    def Fatal(self, arg2: 'std::string const &') -> "void":
        """Fatal(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Fatal(self, arg2)


    def Usage(self, arg2: 'std::string const &') -> "void":
        """Usage(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Usage(self, arg2)


    def Debug(self, arg2: 'std::string const &') -> "void":
        """Debug(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Debug(self, arg2)


    def Verbose(self, arg2: 'std::string const &') -> "void":
        """Verbose(OEErrorHandler self, std::string const & arg2)"""
        return _oechem.OEErrorHandler_Verbose(self, arg2)


    def Msg(self, level: 'unsigned int', arg3: 'std::string const &') -> "void":
        """Msg(OEErrorHandler self, unsigned int level, std::string const & arg3)"""
        return _oechem.OEErrorHandler_Msg(self, level, arg3)

OEErrorHandler_swigregister = _oechem.OEErrorHandler_swigregister
OEErrorHandler_swigregister(OEErrorHandler)

class OEScopedErrorLevelOverride(object):
    """Proxy of C++ OESystem::OEScopedErrorLevelOverride 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::OEScopedErrorLevelOverride self, unsigned int level, OEErrorHandler hdlr) -> OEScopedErrorLevelOverride
        __init__(OESystem::OEScopedErrorLevelOverride self, unsigned int level) -> OEScopedErrorLevelOverride
        """
        this = _oechem.new_OEScopedErrorLevelOverride(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEScopedErrorLevelOverride
    __del__ = lambda self: None
OEScopedErrorLevelOverride_swigregister = _oechem.OEScopedErrorLevelOverride_swigregister
OEScopedErrorLevelOverride_swigregister(OEScopedErrorLevelOverride)


def OEHistogramFormula(str: 'std::string &', hist: 'unsigned int const *', charge: 'int') -> "void":
    """OEHistogramFormula(std::string & str, unsigned int const * hist, int charge)"""
    return _oechem.OEHistogramFormula(str, hist, charge)

def OECalculateMolecularWeight(mol: 'OEMolBase', isotopic: 'bool'=False) -> "double":
    """
    OECalculateMolecularWeight(OEMolBase mol, bool isotopic=False) -> double
    OECalculateMolecularWeight(OEMolBase mol) -> double
    """
    return _oechem.OECalculateMolecularWeight(mol, isotopic)
class OECSVHeader(object):
    """Proxy of C++ OEChem::OECSVHeader 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__(OEChem::OECSVHeader self) -> OECSVHeader
        __init__(OEChem::OECSVHeader self, OECSVHeader rhs) -> OECSVHeader
        __init__(OEChem::OECSVHeader self, std::vector< std::string > const & columnNames) -> OECSVHeader
        """
        this = _oechem.new_OECSVHeader(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OECSVHeader___nonzero__(self)



    def IsValid(self) -> "bool":
        """IsValid(OECSVHeader self) -> bool"""
        return _oechem.OECSVHeader_IsValid(self)


    def Clear(self) -> "void":
        """Clear(OECSVHeader self)"""
        return _oechem.OECSVHeader_Clear(self)


    def GetNumColumns(self) -> "unsigned int":
        """GetNumColumns(OECSVHeader self) -> unsigned int"""
        return _oechem.OECSVHeader_GetNumColumns(self)


    def GetColumnNames(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetColumnNames(OECSVHeader self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OECSVHeader_GetColumnNames(self)


    def GetColumnName(self, fieldIdx: 'unsigned int') -> "std::string const &":
        """GetColumnName(OECSVHeader self, unsigned int fieldIdx) -> std::string const &"""
        return _oechem.OECSVHeader_GetColumnName(self, fieldIdx)

    __swig_destroy__ = _oechem.delete_OECSVHeader
    __del__ = lambda self: None
OECSVHeader_swigregister = _oechem.OECSVHeader_swigregister
OECSVHeader_swigregister(OECSVHeader)


def OECreateCSVHeader(*args) -> "void":
    """
    OECreateCSVHeader(OECSVHeader header, OEMolBase mol)
    OECreateCSVHeader(OECSVHeader header, OEMCMolBase mol)
    """
    return _oechem.OECreateCSVHeader(*args)

def OEGetSubtree(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetSubtree(OEBondBase arg1, OEUnaryAtomPred excludeAtoms, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSubtree(OEBondBase arg1, OEUnaryAtomPred excludeAtoms) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSubtree(OEAtomBase bgn, OEAtomBase end, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSubtree(OEAtomBase bgn, OEAtomBase end) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetSubtree(*args)

def OEGetSmallestSubtree(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetSmallestSubtree(OEBondBase bond, OEUnaryAtomPred excludeAtoms, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmallestSubtree(OEBondBase bond, OEUnaryAtomPred excludeAtoms) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmallestSubtree(OEBondBase arg1, unsigned int maxDepth=0) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmallestSubtree(OEBondBase arg1) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetSmallestSubtree(*args)

def OEGetAutomorphs(arg1: 'OEMolBase', includeH: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
    """
    OEGetAutomorphs(OEMolBase arg1, bool includeH=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
    OEGetAutomorphs(OEMolBase arg1) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
    """
    return _oechem.OEGetAutomorphs(arg1, includeH)

def OEGetPathLength(arg1: 'OEAtomBase', arg2: 'OEAtomBase', maxPath: 'unsigned int'=0) -> "unsigned int":
    """
    OEGetPathLength(OEAtomBase arg1, OEAtomBase arg2, unsigned int maxPath=0) -> unsigned int
    OEGetPathLength(OEAtomBase arg1, OEAtomBase arg2) -> unsigned int
    """
    return _oechem.OEGetPathLength(arg1, arg2, maxPath)

def OEScrambleMolecule(arg1: 'OEMolBase') -> "bool":
    """OEScrambleMolecule(OEMolBase arg1) -> bool"""
    return _oechem.OEScrambleMolecule(arg1)

def OEDeleteEverythingExceptTheFirstLargestComponent(arg1: 'OEMolBase') -> "bool":
    """OEDeleteEverythingExceptTheFirstLargestComponent(OEMolBase arg1) -> bool"""
    return _oechem.OEDeleteEverythingExceptTheFirstLargestComponent(arg1)

def OETheFunctionFormerlyKnownAsStripSalts(mol: 'OEMolBase') -> "bool":
    """OETheFunctionFormerlyKnownAsStripSalts(OEMolBase mol) -> bool"""
    return _oechem.OETheFunctionFormerlyKnownAsStripSalts(mol)

def OEAcyclicPath(arg1: 'OEAtomBase', arg2: 'OEAtomBase') -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """OEAcyclicPath(OEAtomBase arg1, OEAtomBase arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase > *"""
    return _oechem.OEAcyclicPath(arg1, arg2)

def OEShortestPath(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEShortestPath(OEAtomBase a, OEAtomBase b) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEShortestPath(OEAtomBase a, OEAtomBase b, OEUnaryAtomPred excludeAtoms) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEShortestPath(*args)

def OEMolToSmiles(mol: 'OEMolBase') -> "std::string":
    """OEMolToSmiles(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToSmiles(mol)

def OESmilesToMol(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OESmilesToMol(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OESmilesToMol(mol, str)

def OEMolToInChI(mol: 'OEMolBase') -> "std::string":
    """OEMolToInChI(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToInChI(mol)

def OEMolToInChIKey(mol: 'OEMolBase') -> "std::string":
    """OEMolToInChIKey(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToInChIKey(mol)

def OEMolToSTDInChI(mol: 'OEMolBase') -> "std::string":
    """OEMolToSTDInChI(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToSTDInChI(mol)

def OEMolToSTDInChIKey(mol: 'OEMolBase') -> "std::string":
    """OEMolToSTDInChIKey(OEMolBase mol) -> std::string"""
    return _oechem.OEMolToSTDInChIKey(mol)

def OEInChIToMol(mol: 'OEMolBase', str: 'std::string const &') -> "bool":
    """OEInChIToMol(OEMolBase mol, std::string const & str) -> bool"""
    return _oechem.OEInChIToMol(mol, str)

def OEReadRxnFile(*args) -> "bool":
    """
    OEReadRxnFile(oemolistream ifs, OEMolBase mol, char const * id, bool query=False) -> bool
    OEReadRxnFile(oemolistream ifs, OEMolBase mol, char const * id) -> bool
    OEReadRxnFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadRxnFile(*args)

def OEReadMol2File(ifs: 'oemolistream', mol: 'OEMolBase', m2h: 'bool'=False) -> "bool":
    """
    OEReadMol2File(oemolistream ifs, OEMolBase mol, bool m2h=False) -> bool
    OEReadMol2File(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadMol2File(ifs, mol, m2h)

def OEWriteMol2File(ofs: 'oemolostream', mol: 'OEMolBase', m2h: 'bool'=True, substruct: 'bool'=False) -> "void":
    """
    OEWriteMol2File(oemolostream ofs, OEMolBase mol, bool m2h=True, bool substruct=False)
    OEWriteMol2File(oemolostream ofs, OEMolBase mol, bool m2h=True)
    OEWriteMol2File(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteMol2File(ofs, mol, m2h, substruct)

def OEReadXYZFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadXYZFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadXYZFile(ifs, mol)

def OEWriteXYZFile(ofs: 'oemolostream', mol: 'OEMolBase', charges: 'bool'=True, symbols: 'bool'=True, doubleprecision: 'bool'=False) -> "void":
    """
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol, bool charges=True, bool symbols=True, bool doubleprecision=False)
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol, bool charges=True, bool symbols=True)
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol, bool charges=True)
    OEWriteXYZFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteXYZFile(ofs, mol, charges, symbols, doubleprecision)

def OEAddCustomFASTAResidue(code: 'char const *', smiles: 'char const *') -> "bool":
    """OEAddCustomFASTAResidue(char const * code, char const * smiles) -> bool"""
    return _oechem.OEAddCustomFASTAResidue(code, smiles)

def OEReadFASTAFile(ifs: 'oemolistream', mol: 'OEMolBase', customResidues: 'bool'=False, embeddedSmiles: 'bool'=False) -> "bool":
    """
    OEReadFASTAFile(oemolistream ifs, OEMolBase mol, bool customResidues=False, bool embeddedSmiles=False) -> bool
    OEReadFASTAFile(oemolistream ifs, OEMolBase mol, bool customResidues=False) -> bool
    OEReadFASTAFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadFASTAFile(ifs, mol, customResidues, embeddedSmiles)

def OEWriteFASTAFile(ofs: 'oemolostream', mol: 'OEMolBase', ident: 'char const *') -> "void":
    """OEWriteFASTAFile(oemolostream ofs, OEMolBase mol, char const * ident)"""
    return _oechem.OEWriteFASTAFile(ofs, mol, ident)

def OEWriteCDXFile(ofs: 'oemolostream', mol: 'OEMolBase') -> "bool":
    """OEWriteCDXFile(oemolostream ofs, OEMolBase mol) -> bool"""
    return _oechem.OEWriteCDXFile(ofs, mol)

def OEReadMacroModelFile(*args) -> "bool":
    """
    OEReadMacroModelFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMacroModelFile(oemolistream ifs, OEMCMolBase mol) -> bool
    """
    return _oechem.OEReadMacroModelFile(*args)

def OEWriteMacroModelFile(*args) -> "void":
    """
    OEWriteMacroModelFile(oemolostream ofs, OEMolBase mol)
    OEWriteMacroModelFile(oemolostream ofs, OEMCMolBase mol)
    """
    return _oechem.OEWriteMacroModelFile(*args)

def OEReadSketchFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadSketchFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadSketchFile(ifs, mol)

def OEReadMDLQueryFile(*args) -> "bool":
    """
    OEReadMDLQueryFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMDLQueryFile(oemolistream ifs, OEQMolBase qmol, unsigned int opts) -> bool
    OEReadMDLQueryFile(oemolistream ifs, OEQMolBase qmol) -> bool
    """
    return _oechem.OEReadMDLQueryFile(*args)

def OEReadMDLReactionQueryFile(*args) -> "bool":
    """
    OEReadMDLReactionQueryFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMDLReactionQueryFile(oemolistream ifs, OEQMolBase qmol, unsigned int opts) -> bool
    OEReadMDLReactionQueryFile(oemolistream ifs, OEQMolBase qmol) -> bool
    """
    return _oechem.OEReadMDLReactionQueryFile(*args)

def OEBuildMDLQueryExpressions(*args) -> "bool":
    """
    OEBuildMDLQueryExpressions(OEQMolBase qmol, OEMolBase mol, unsigned int opts) -> bool
    OEBuildMDLQueryExpressions(OEQMolBase qmol, OEMolBase mol) -> bool
    """
    return _oechem.OEBuildMDLQueryExpressions(*args)

def OEIsBinary(format: 'unsigned int') -> "bool":
    """OEIsBinary(unsigned int format) -> bool"""
    return _oechem.OEIsBinary(format)

def OEIsGZip(arg1: 'char const *') -> "bool":
    """OEIsGZip(char const * arg1) -> bool"""
    return _oechem.OEIsGZip(arg1)

def OEIs2DFormat(format: 'unsigned int') -> "bool":
    """OEIs2DFormat(unsigned int format) -> bool"""
    return _oechem.OEIs2DFormat(format)

def OEIs3DFormat(format: 'unsigned int') -> "bool":
    """OEIs3DFormat(unsigned int format) -> bool"""
    return _oechem.OEIs3DFormat(format)

def OEIsSDDataFormat(format: 'unsigned int') -> "bool":
    """OEIsSDDataFormat(unsigned int format) -> bool"""
    return _oechem.OEIsSDDataFormat(format)

def OEGetFormatExtension(tag: 'unsigned int') -> "char const *":
    """OEGetFormatExtension(unsigned int tag) -> char const *"""
    return _oechem.OEGetFormatExtension(tag)

def OEGetFormatString(tag: 'unsigned int') -> "char const *":
    """OEGetFormatString(unsigned int tag) -> char const *"""
    return _oechem.OEGetFormatString(tag)

def OEGetDefaultIFlavor(format: 'unsigned int') -> "unsigned int":
    """OEGetDefaultIFlavor(unsigned int format) -> unsigned int"""
    return _oechem.OEGetDefaultIFlavor(format)

def OEGetDefaultOFlavor(format: 'unsigned int') -> "unsigned int":
    """OEGetDefaultOFlavor(unsigned int format) -> unsigned int"""
    return _oechem.OEGetDefaultOFlavor(format)

def OESetDefaultFlavors(*args) -> "bool":
    """
    OESetDefaultFlavors(oemolostream arg1) -> bool
    OESetDefaultFlavors(oemolistream arg1) -> bool
    """
    return _oechem.OESetDefaultFlavors(*args)

def OESetDefaultIFlavors(arg1: 'oemolstreambase') -> "bool":
    """OESetDefaultIFlavors(oemolstreambase arg1) -> bool"""
    return _oechem.OESetDefaultIFlavors(arg1)

def OESetDefaultOFlavors(arg1: 'oemolstreambase') -> "bool":
    """OESetDefaultOFlavors(oemolstreambase arg1) -> bool"""
    return _oechem.OESetDefaultOFlavors(arg1)

def OEIsReadable(*args) -> "bool":
    """
    OEIsReadable(unsigned int format) -> bool
    OEIsReadable(std::string const & filename) -> bool
    OEIsReadable(unsigned int format, unsigned int flavor) -> bool
    OEIsReadable(std::string const & filename, unsigned int flavor) -> bool
    """
    return _oechem.OEIsReadable(*args)

def OEIsWriteable(*args) -> "bool":
    """
    OEIsWriteable(unsigned int format) -> bool
    OEIsWriteable(std::string const & filename) -> bool
    OEIsWriteable(unsigned int format, unsigned int flavor) -> bool
    OEIsWriteable(std::string const & filename, unsigned int flavor) -> bool
    """
    return _oechem.OEIsWriteable(*args)

def OEIsSameFormat(iformat: 'unsigned int', iflavor: 'unsigned int', oformat: 'unsigned int', oflavor: 'unsigned int') -> "bool":
    """OEIsSameFormat(unsigned int iformat, unsigned int iflavor, unsigned int oformat, unsigned int oflavor) -> bool"""
    return _oechem.OEIsSameFormat(iformat, iflavor, oformat, oflavor)

def OEReadOEBFile(*args) -> "unsigned int":
    """
    OEReadOEBFile(oeistream ifs, OEMolBase mol, OEBinaryIOHandlerBase handler) -> unsigned int
    OEReadOEBFile(oeistream ifs, OEMCMolBase mol, OEBinaryIOHandlerBase handler) -> unsigned int
    """
    return _oechem.OEReadOEBFile(*args)

def OEReadMDLFile(*args) -> "bool":
    """
    OEReadMDLFile(oemolistream ifs, OEMolBase mol, char const * id) -> bool
    OEReadMDLFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadMDLFile(*args)

def OEWriteMDLFile(*args) -> "void":
    """
    OEWriteMDLFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWriteMDLFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteMDLFile(*args)

def OEReadCSVHeader(*args) -> "bool":
    """
    OEReadCSVHeader(oemolistream ifs, OECSVHeader header, unsigned int flavor) -> bool
    OEReadCSVHeader(oemolistream ifs, OECSVHeader header) -> bool
    """
    return _oechem.OEReadCSVHeader(*args)

def OEWriteCSVHeader(*args) -> "void":
    """
    OEWriteCSVHeader(oemolostream ifs, OECSVHeader header, unsigned int flavor)
    OEWriteCSVHeader(oemolostream ifs, OECSVHeader header)
    """
    return _oechem.OEWriteCSVHeader(*args)

def OEReadCSVFile(*args) -> "bool":
    """
    OEReadCSVFile(oemolistream ifs, OEMolBase mol, unsigned int flavor) -> bool
    OEReadCSVFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadCSVFile(*args)

def OEWriteCSVFile(*args) -> "void":
    """
    OEWriteCSVFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWriteCSVFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteCSVFile(*args)

def OEReadPDBFile(*args) -> "bool":
    """
    OEReadPDBFile(oemolistream ifs, OEMolBase mol, unsigned int flavor) -> bool
    OEReadPDBFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadPDBFile(*args)

def OEWritePDBFile(*args) -> "void":
    """
    OEWritePDBFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWritePDBFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWritePDBFile(*args)

def OEReadMOPACFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadMOPACFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadMOPACFile(ifs, mol)

def OEWriteMOPACInputFile(*args) -> "void":
    """
    OEWriteMOPACInputFile(oemolostream ofs, OEMolBase mol, unsigned int flavor)
    OEWriteMOPACInputFile(oemolostream ofs, OEMolBase mol)
    """
    return _oechem.OEWriteMOPACInputFile(*args)

def OEReadCDXFile(*args) -> "bool":
    """
    OEReadCDXFile(oemolistream ifs, OEMolBase mol, unsigned int flavor) -> bool
    OEReadCDXFile(oemolistream ifs, OEMolBase mol) -> bool
    """
    return _oechem.OEReadCDXFile(*args)

def OEReadCIFFile(ifs: 'oemolistream', mol: 'OEMolBase') -> "bool":
    """OEReadCIFFile(oemolistream ifs, OEMolBase mol) -> bool"""
    return _oechem.OEReadCIFFile(ifs, mol)

def OEGetFileExtension(fname: 'char const *') -> "char const *":
    """OEGetFileExtension(char const * fname) -> char const *"""
    return _oechem.OEGetFileExtension(fname)

def OEIsExtension(fname: 'char const *') -> "bool":
    """OEIsExtension(char const * fname) -> bool"""
    return _oechem.OEIsExtension(fname)

def OEGetFileType(ext: 'char const *') -> "unsigned int":
    """OEGetFileType(char const * ext) -> unsigned int"""
    return _oechem.OEGetFileType(ext)

def OEWriteConstMolecule(*args) -> "unsigned int":
    """
    OEWriteConstMolecule(oemolostream ofs, OEMCMolBase mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEQMolBase mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEMolBase mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEChem::OEMol const & mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEChem::OEQMol const & mol) -> unsigned int
    OEWriteConstMolecule(oemolostream ofs, OEChem::OEGraphMol const & mol) -> unsigned int
    """
    return _oechem.OEWriteConstMolecule(*args)

def OEAssignHybridization(arg1: 'OEMolBase') -> "bool":
    """OEAssignHybridization(OEMolBase arg1) -> bool"""
    return _oechem.OEAssignHybridization(arg1)

def OEGetHybridization(arg1: 'OEAtomBase') -> "unsigned int":
    """OEGetHybridization(OEAtomBase arg1) -> unsigned int"""
    return _oechem.OEGetHybridization(arg1)

def OEHasExplicitHydrogens(mol: 'OEMolBase') -> "bool":
    """OEHasExplicitHydrogens(OEMolBase mol) -> bool"""
    return _oechem.OEHasExplicitHydrogens(mol)

def OEHasImplicitHydrogens(mol: 'OEMolBase') -> "bool":
    """OEHasImplicitHydrogens(OEMolBase mol) -> bool"""
    return _oechem.OEHasImplicitHydrogens(mol)

def OEDefaultImplicitHCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDefaultImplicitHCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDefaultImplicitHCount(atm)

def OEAssignImplicitHydrogens(*args) -> "void":
    """
    OEAssignImplicitHydrogens(OEAtomBase atm)
    OEAssignImplicitHydrogens(OEMolBase mol)
    """
    return _oechem.OEAssignImplicitHydrogens(*args)

def OEDefaultMDLHCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDefaultMDLHCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDefaultMDLHCount(atm)

def OEAssignMDLHydrogens(*args) -> "void":
    """
    OEAssignMDLHydrogens(OEAtomBase atm)
    OEAssignMDLHydrogens(OEMolBase mol)
    """
    return _oechem.OEAssignMDLHydrogens(*args)

def OEAddExplicitHydrogens(*args) -> "bool":
    """
    OEAddExplicitHydrogens(OEMolBase mol, OEAtomBase atm) -> bool
    OEAddExplicitHydrogens(OEChem::OEMol & mol, bool polarOnly=False, bool set3D=True) -> bool
    OEAddExplicitHydrogens(OEChem::OEMol & mol, bool polarOnly=False) -> bool
    OEAddExplicitHydrogens(OEChem::OEMol & mol) -> bool
    OEAddExplicitHydrogens(OEMCMolBase mol, bool polarOnly=False, bool set3D=True) -> bool
    OEAddExplicitHydrogens(OEMCMolBase mol, bool polarOnly=False) -> bool
    OEAddExplicitHydrogens(OEMCMolBase mol) -> bool
    OEAddExplicitHydrogens(OEMolBase mol, bool polarOnly=False, bool set3D=True) -> bool
    OEAddExplicitHydrogens(OEMolBase mol, bool polarOnly=False) -> bool
    OEAddExplicitHydrogens(OEMolBase mol) -> bool
    """
    return _oechem.OEAddExplicitHydrogens(*args)

def OESuppressHydrogens(*args) -> "bool":
    """
    OESuppressHydrogens(OEMolBase mol, bool retainPolar=False, bool retainStereo=False, bool retainIsotope=True) -> bool
    OESuppressHydrogens(OEMolBase mol, bool retainPolar=False, bool retainStereo=False) -> bool
    OESuppressHydrogens(OEMolBase mol, bool retainPolar=False) -> bool
    OESuppressHydrogens(OEMolBase mol) -> bool
    OESuppressHydrogens(OEAtomBase atm, bool retainPolar=False, bool retainStereo=False, bool retainIsotope=True) -> bool
    OESuppressHydrogens(OEAtomBase atm, bool retainPolar=False, bool retainStereo=False) -> bool
    OESuppressHydrogens(OEAtomBase atm, bool retainPolar=False) -> bool
    OESuppressHydrogens(OEAtomBase atm) -> bool
    """
    return _oechem.OESuppressHydrogens(*args)

def OEHasStereoHydrogens(atm: 'OEAtomBase') -> "bool":
    """OEHasStereoHydrogens(OEAtomBase atm) -> bool"""
    return _oechem.OEHasStereoHydrogens(atm)

def OEHasAtomStereoHydrogens(atm: 'OEAtomBase') -> "bool":
    """OEHasAtomStereoHydrogens(OEAtomBase atm) -> bool"""
    return _oechem.OEHasAtomStereoHydrogens(atm)

def OEHasBondStereoHydrogens(atm: 'OEAtomBase') -> "bool":
    """OEHasBondStereoHydrogens(OEAtomBase atm) -> bool"""
    return _oechem.OEHasBondStereoHydrogens(atm)

def OESet3DHydrogenGeom(*args) -> "bool":
    """
    OESet3DHydrogenGeom(OEMolBase mol) -> bool
    OESet3DHydrogenGeom(OEMolBase mol, OEAtomBase hatom) -> bool
    """
    return _oechem.OESet3DHydrogenGeom(*args)

def OESet2DHydrogenGeom(mol: 'OEMolBase') -> "bool":
    """OESet2DHydrogenGeom(OEMolBase mol) -> bool"""
    return _oechem.OESet2DHydrogenGeom(mol)

def OECorrectAcidProtonGeometry(*args) -> "bool":
    """
    OECorrectAcidProtonGeometry(OEMolBase mol) -> bool
    OECorrectAcidProtonGeometry(OEMolBase mol, OEAtomBase atom) -> bool
    """
    return _oechem.OECorrectAcidProtonGeometry(*args)

def OEKekulize(arg1: 'OEMolBase') -> "bool":
    """OEKekulize(OEMolBase arg1) -> bool"""
    return _oechem.OEKekulize(arg1)
class OEMCSSearch(object):
    """Proxy of C++ OEChem::OEMCSSearch 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__(OEChem::OEMCSSearch self, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, char const * arg2, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, char const * arg2) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEQMolBase arg2, bool makeCopy=True, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEQMolBase arg2, bool makeCopy=True) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEQMolBase arg2) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4, unsigned int type) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> OEMCSSearch
        __init__(OEChem::OEMCSSearch self, OEMCSSearch arg2) -> OEMCSSearch
        """
        this = _oechem.new_OEMCSSearch(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCSSearch
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OEMCSSearch___nonzero__(self)



    def Init(self, *args) -> "bool":
        """
        Init(OEMCSSearch self, char const * arg2) -> bool
        Init(OEMCSSearch self, OEQMolBase arg2, bool makeCopy=True) -> bool
        Init(OEMCSSearch self, OEQMolBase arg2) -> bool
        Init(OEMCSSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> bool
        """
        return _oechem.OEMCSSearch_Init(self, *args)


    def SingleMatch(self, *args) -> "bool":
        """
        SingleMatch(OEMCSSearch self, OEMolBase arg2) -> bool
        SingleMatch(OEMCSSearch self, OEQMolBase arg2) -> bool
        """
        return _oechem.OEMCSSearch_SingleMatch(self, *args)


    def Match(self, *args) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """
        Match(OEMCSSearch self, OEMolBase arg2, bool umatch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OEMCSSearch self, OEMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OEMCSSearch self, OEQMolBase arg2, bool umatch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OEMCSSearch self, OEQMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
        """
        return _oechem.OEMCSSearch_Match(self, *args)


    def AddConstraint(self, *args) -> "bool":
        """
        AddConstraint(OEMCSSearch self, OEMatchPairAtom arg2) -> bool
        AddConstraint(OEMCSSearch self, OEMatchPairBond arg2) -> bool
        """
        return _oechem.OEMCSSearch_AddConstraint(self, *args)


    def ClearConstraints(self) -> "void":
        """ClearConstraints(OEMCSSearch self)"""
        return _oechem.OEMCSSearch_ClearConstraints(self)


    def SetMinAtoms(self, arg2: 'unsigned int') -> "bool":
        """SetMinAtoms(OEMCSSearch self, unsigned int arg2) -> bool"""
        return _oechem.OEMCSSearch_SetMinAtoms(self, arg2)


    def SetMaxMatches(self, arg2: 'unsigned int') -> "bool":
        """SetMaxMatches(OEMCSSearch self, unsigned int arg2) -> bool"""
        return _oechem.OEMCSSearch_SetMaxMatches(self, arg2)


    def SetSaveRange(self, arg2: 'unsigned int') -> "bool":
        """SetSaveRange(OEMCSSearch self, unsigned int arg2) -> bool"""
        return _oechem.OEMCSSearch_SetSaveRange(self, arg2)


    def GetMinAtoms(self) -> "unsigned int":
        """GetMinAtoms(OEMCSSearch self) -> unsigned int"""
        return _oechem.OEMCSSearch_GetMinAtoms(self)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OEMCSSearch self) -> unsigned int"""
        return _oechem.OEMCSSearch_GetMaxMatches(self)


    def GetSaveRange(self) -> "unsigned int":
        """GetSaveRange(OEMCSSearch self) -> unsigned int"""
        return _oechem.OEMCSSearch_GetSaveRange(self)


    def SetMCSFunc(self, arg2: 'OEMCSFunc') -> "bool":
        """SetMCSFunc(OEMCSSearch self, OEMCSFunc arg2) -> bool"""
        return _oechem.OEMCSSearch_SetMCSFunc(self, arg2)


    def GetPattern(self) -> "OEChem::OEQMolBase const &":
        """GetPattern(OEMCSSearch self) -> OEQMolBase"""
        return _oechem.OEMCSSearch_GetPattern(self)

OEMCSSearch_swigregister = _oechem.OEMCSSearch_swigregister
OEMCSSearch_swigregister(OEMCSSearch)


def OEGetMCSExhaustiveSearchTruncationLimit() -> "unsigned int":
    """OEGetMCSExhaustiveSearchTruncationLimit() -> unsigned int"""
    return _oechem.OEGetMCSExhaustiveSearchTruncationLimit()

def OESetMCSExhaustiveSearchTruncationLimit(limit: 'unsigned int') -> "void":
    """OESetMCSExhaustiveSearchTruncationLimit(unsigned int limit)"""
    return _oechem.OESetMCSExhaustiveSearchTruncationLimit(limit)
class OEMCSFunc(object):
    """Proxy of C++ OEChem::OEMCSFunc class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEMCSFunc
    __del__ = lambda self: None

    def __call__(self, pattern: 'OEMolBase', target: 'OEMolBase', amap: 'OEChem::OEAtomBase **', bmap: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSFunc self, OEMolBase pattern, OEMolBase target, OEChem::OEAtomBase ** amap, OEChem::OEBondBase ** bmap) -> double"""
        return _oechem.OEMCSFunc___call__(self, pattern, target, amap, bmap)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSFunc self) -> OEMCSFunc"""
        return _oechem.OEMCSFunc_CreateCopy(self)

OEMCSFunc_swigregister = _oechem.OEMCSFunc_swigregister
OEMCSFunc_swigregister(OEMCSFunc)

class OEMCSMaxAtoms(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxAtoms class."""

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

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxAtoms self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxAtoms___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxAtoms self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxAtoms_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEMCSMaxAtoms self) -> OEMCSMaxAtoms"""
        this = _oechem.new_OEMCSMaxAtoms()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCSMaxAtoms
    __del__ = lambda self: None
OEMCSMaxAtoms_swigregister = _oechem.OEMCSMaxAtoms_swigregister
OEMCSMaxAtoms_swigregister(OEMCSMaxAtoms)

class OEMCSMaxBonds(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxBonds class."""

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

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxBonds self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxBonds___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxBonds self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxBonds_CreateCopy(self)


    def __init__(self):
        """__init__(OEChem::OEMCSMaxBonds self) -> OEMCSMaxBonds"""
        this = _oechem.new_OEMCSMaxBonds()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMCSMaxBonds
    __del__ = lambda self: None
OEMCSMaxBonds_swigregister = _oechem.OEMCSMaxBonds_swigregister
OEMCSMaxBonds_swigregister(OEMCSMaxBonds)

class OEMCSMaxAtomsCompleteCycles(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxAtomsCompleteCycles 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, a: 'double'=1.0):
        """
        __init__(OEChem::OEMCSMaxAtomsCompleteCycles self, double a=1.0) -> OEMCSMaxAtomsCompleteCycles
        __init__(OEChem::OEMCSMaxAtomsCompleteCycles self) -> OEMCSMaxAtomsCompleteCycles
        """
        this = _oechem.new_OEMCSMaxAtomsCompleteCycles(a)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxAtomsCompleteCycles self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxAtomsCompleteCycles___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxAtomsCompleteCycles self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxAtomsCompleteCycles_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMCSMaxAtomsCompleteCycles
    __del__ = lambda self: None
OEMCSMaxAtomsCompleteCycles_swigregister = _oechem.OEMCSMaxAtomsCompleteCycles_swigregister
OEMCSMaxAtomsCompleteCycles_swigregister(OEMCSMaxAtomsCompleteCycles)

class OEMCSMaxBondsCompleteCycles(OEMCSFunc):
    """Proxy of C++ OEChem::OEMCSMaxBondsCompleteCycles 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, a: 'double'=1.0):
        """
        __init__(OEChem::OEMCSMaxBondsCompleteCycles self, double a=1.0) -> OEMCSMaxBondsCompleteCycles
        __init__(OEChem::OEMCSMaxBondsCompleteCycles self) -> OEMCSMaxBondsCompleteCycles
        """
        this = _oechem.new_OEMCSMaxBondsCompleteCycles(a)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, arg2: 'OEMolBase', arg3: 'OEMolBase', arg4: 'OEChem::OEAtomBase **', arg5: 'OEChem::OEBondBase **') -> "double":
        """__call__(OEMCSMaxBondsCompleteCycles self, OEMolBase arg2, OEMolBase arg3, OEChem::OEAtomBase ** arg4, OEChem::OEBondBase ** arg5) -> double"""
        return _oechem.OEMCSMaxBondsCompleteCycles___call__(self, arg2, arg3, arg4, arg5)


    def CreateCopy(self) -> "OEChem::OEMCSFunc *":
        """CreateCopy(OEMCSMaxBondsCompleteCycles self) -> OEMCSFunc"""
        return _oechem.OEMCSMaxBondsCompleteCycles_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEMCSMaxBondsCompleteCycles
    __del__ = lambda self: None
OEMCSMaxBondsCompleteCycles_swigregister = _oechem.OEMCSMaxBondsCompleteCycles_swigregister
OEMCSMaxBondsCompleteCycles_swigregister(OEMCSMaxBondsCompleteCycles)

class OECliqueSearch(object):
    """Proxy of C++ OEChem::OECliqueSearch 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__(OEChem::OECliqueSearch self, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, char const * arg2, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, char const * arg2) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEQMolBase arg2, bool makeCopy=True, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEQMolBase arg2, bool makeCopy=True) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEQMolBase arg2) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4, unsigned int type) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> OECliqueSearch
        __init__(OEChem::OECliqueSearch self, OECliqueSearch arg2) -> OECliqueSearch
        """
        this = _oechem.new_OECliqueSearch(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OECliqueSearch
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OECliqueSearch___nonzero__(self)



    def Init(self, *args) -> "bool":
        """
        Init(OECliqueSearch self, char const * arg2) -> bool
        Init(OECliqueSearch self, OEQMolBase arg2, bool makeCopy=True) -> bool
        Init(OECliqueSearch self, OEQMolBase arg2) -> bool
        Init(OECliqueSearch self, OEMolBase arg2, unsigned int arg3, unsigned int arg4) -> bool
        """
        return _oechem.OECliqueSearch_Init(self, *args)


    def SingleMatch(self, *args) -> "bool":
        """
        SingleMatch(OECliqueSearch self, OEMolBase arg2) -> bool
        SingleMatch(OECliqueSearch self, OEQMolBase arg2) -> bool
        """
        return _oechem.OECliqueSearch_SingleMatch(self, *args)


    def Match(self, *args) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """
        Match(OECliqueSearch self, OEMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OECliqueSearch self, OEQMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
        """
        return _oechem.OECliqueSearch_Match(self, *args)


    def AddConstraint(self, *args) -> "bool":
        """
        AddConstraint(OECliqueSearch self, OEMatchPairAtom arg2) -> bool
        AddConstraint(OECliqueSearch self, OEMatchPairBond arg2) -> bool
        """
        return _oechem.OECliqueSearch_AddConstraint(self, *args)


    def ClearConstraints(self) -> "void":
        """ClearConstraints(OECliqueSearch self)"""
        return _oechem.OECliqueSearch_ClearConstraints(self)


    def SetMinAtoms(self, arg2: 'unsigned int') -> "bool":
        """SetMinAtoms(OECliqueSearch self, unsigned int arg2) -> bool"""
        return _oechem.OECliqueSearch_SetMinAtoms(self, arg2)


    def SetMaxMatches(self, arg2: 'unsigned int') -> "bool":
        """SetMaxMatches(OECliqueSearch self, unsigned int arg2) -> bool"""
        return _oechem.OECliqueSearch_SetMaxMatches(self, arg2)


    def SetSaveRange(self, arg2: 'unsigned int') -> "bool":
        """SetSaveRange(OECliqueSearch self, unsigned int arg2) -> bool"""
        return _oechem.OECliqueSearch_SetSaveRange(self, arg2)


    def GetMinAtoms(self) -> "unsigned int":
        """GetMinAtoms(OECliqueSearch self) -> unsigned int"""
        return _oechem.OECliqueSearch_GetMinAtoms(self)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OECliqueSearch self) -> unsigned int"""
        return _oechem.OECliqueSearch_GetMaxMatches(self)


    def GetSaveRange(self) -> "unsigned int":
        """GetSaveRange(OECliqueSearch self) -> unsigned int"""
        return _oechem.OECliqueSearch_GetSaveRange(self)


    def GetPattern(self) -> "OEChem::OEQMolBase const &":
        """GetPattern(OECliqueSearch self) -> OEQMolBase"""
        return _oechem.OECliqueSearch_GetPattern(self)


    def SetMCSFunc(self, arg2: 'OEMCSFunc') -> "bool":
        """SetMCSFunc(OECliqueSearch self, OEMCSFunc arg2) -> bool"""
        return _oechem.OECliqueSearch_SetMCSFunc(self, arg2)

OECliqueSearch_swigregister = _oechem.OECliqueSearch_swigregister
OECliqueSearch_swigregister(OECliqueSearch)


def OEMDLHasParity(mol: 'OEMolBase') -> "bool":
    """OEMDLHasParity(OEMolBase mol) -> bool"""
    return _oechem.OEMDLHasParity(mol)

def OEMDLGetParity(mol: 'OEMolBase') -> "bool":
    """OEMDLGetParity(OEMolBase mol) -> bool"""
    return _oechem.OEMDLGetParity(mol)

def OEMDLSetParity(mol: 'OEMolBase', value: 'bool') -> "bool":
    """OEMDLSetParity(OEMolBase mol, bool value) -> bool"""
    return _oechem.OEMDLSetParity(mol, value)

def OEMDLClearParity(mol: 'OEMolBase') -> "void":
    """OEMDLClearParity(OEMolBase mol)"""
    return _oechem.OEMDLClearParity(mol)

def OEMDLPerceiveParity(mol: 'OEMolBase') -> "void":
    """OEMDLPerceiveParity(OEMolBase mol)"""
    return _oechem.OEMDLPerceiveParity(mol)

def OEMDLStereoFromParity(mol: 'OEMolBase') -> "void":
    """OEMDLStereoFromParity(OEMolBase mol)"""
    return _oechem.OEMDLStereoFromParity(mol)

def OEAtomSetMDLParity(atm: 'OEAtomBase', arg2: 'unsigned int') -> "bool":
    """OEAtomSetMDLParity(OEAtomBase atm, unsigned int arg2) -> bool"""
    return _oechem.OEAtomSetMDLParity(atm, arg2)

def OEAtomGetMDLParity(atm: 'OEAtomBase') -> "unsigned int":
    """OEAtomGetMDLParity(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEAtomGetMDLParity(atm)

def OEMDLCorrectBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLCorrectBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLCorrectBondStereo(mol)

def OEMDLHasIncorrectBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLHasIncorrectBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLHasIncorrectBondStereo(mol)

def OEMDLClearBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLClearBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLClearBondStereo(mol)

def OEMDLPerceiveBondStereo(mol: 'OEMolBase') -> "bool":
    """OEMDLPerceiveBondStereo(OEMolBase mol) -> bool"""
    return _oechem.OEMDLPerceiveBondStereo(mol)

def OEMDLStereoFromBondStereo(mol: 'OEMolBase', bAllowMarkCorrections: 'bool'=False) -> "bool":
    """
    OEMDLStereoFromBondStereo(OEMolBase mol, bool bAllowMarkCorrections=False) -> bool
    OEMDLStereoFromBondStereo(OEMolBase mol) -> bool
    """
    return _oechem.OEMDLStereoFromBondStereo(mol, bAllowMarkCorrections)

def OEMDLGetValence(elemno: 'unsigned int', charge: 'int', minval: 'unsigned int') -> "unsigned int":
    """OEMDLGetValence(unsigned int elemno, int charge, unsigned int minval) -> unsigned int"""
    return _oechem.OEMDLGetValence(elemno, charge, minval)

def OEMacroModelAtomTypes(mol: 'OEMolBase') -> "bool":
    """OEMacroModelAtomTypes(OEMolBase mol) -> bool"""
    return _oechem.OEMacroModelAtomTypes(mol)

def OEMacroModelAtomTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMacroModelAtomTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMacroModelAtomTypeNames(mol)

def OEMacroModelTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMacroModelTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMacroModelTypeNames(mol)

def OEMacroModelTypeName(type: 'unsigned int') -> "char const *":
    """OEMacroModelTypeName(unsigned int type) -> char const *"""
    return _oechem.OEMacroModelTypeName(type)

def OEMacroModelTypeElement(type: 'unsigned int') -> "unsigned int":
    """OEMacroModelTypeElement(unsigned int type) -> unsigned int"""
    return _oechem.OEMacroModelTypeElement(type)

def OEIsForceFieldDummyAtom(atom: 'OEAtomBase') -> "bool":
    """OEIsForceFieldDummyAtom(OEAtomBase atom) -> bool"""
    return _oechem.OEIsForceFieldDummyAtom(atom)

def OESetForceFieldDummyAtom(atom: 'OEAtomBase') -> "void":
    """OESetForceFieldDummyAtom(OEAtomBase atom)"""
    return _oechem.OESetForceFieldDummyAtom(atom)

def OEClearForceFieldDummyAtom(atom: 'OEAtomBase') -> "void":
    """OEClearForceFieldDummyAtom(OEAtomBase atom)"""
    return _oechem.OEClearForceFieldDummyAtom(atom)

def OEClearForceFieldDummyAtoms(mol: 'OEMolBase') -> "void":
    """OEClearForceFieldDummyAtoms(OEMolBase mol)"""
    return _oechem.OEClearForceFieldDummyAtoms(mol)
class OEMMFFTypeResult(object):
    """Proxy of C++ OEChem::OEMMFFTypeResult 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__(OEChem::OEMMFFTypeResult self, unsigned int type, bool failed) -> OEMMFFTypeResult
        __init__(OEChem::OEMMFFTypeResult self, OEMMFFTypeResult rhs) -> OEMMFFTypeResult
        """
        this = _oechem.new_OEMMFFTypeResult(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetMMFFType(self) -> "unsigned int":
        """GetMMFFType(OEMMFFTypeResult self) -> unsigned int"""
        return _oechem.OEMMFFTypeResult_GetMMFFType(self)


    def GetFailed(self) -> "bool":
        """GetFailed(OEMMFFTypeResult self) -> bool"""
        return _oechem.OEMMFFTypeResult_GetFailed(self)

    _type = _swig_property(_oechem.OEMMFFTypeResult__type_get, _oechem.OEMMFFTypeResult__type_set)
    _failed = _swig_property(_oechem.OEMMFFTypeResult__failed_get, _oechem.OEMMFFTypeResult__failed_set)
    __swig_destroy__ = _oechem.delete_OEMMFFTypeResult
    __del__ = lambda self: None
OEMMFFTypeResult_swigregister = _oechem.OEMMFFTypeResult_swigregister
OEMMFFTypeResult_swigregister(OEMMFFTypeResult)


def OEMMFFAtomType(atm: 'OEAtomBase') -> "OEChem::OEMMFFTypeResult":
    """OEMMFFAtomType(OEAtomBase atm) -> OEMMFFTypeResult"""
    return _oechem.OEMMFFAtomType(atm)

def OEMMFFAtomTypes(mol: 'OEMolBase') -> "bool":
    """OEMMFFAtomTypes(OEMolBase mol) -> bool"""
    return _oechem.OEMMFFAtomTypes(mol)

def OEMMFFAtomTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMMFFAtomTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMMFFAtomTypeNames(mol)

def OEMMFFTypeNames(mol: 'OEMolBase') -> "bool":
    """OEMMFFTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OEMMFFTypeNames(mol)

def OEMMFFTypeName(type: 'unsigned int') -> "char const *":
    """OEMMFFTypeName(unsigned int type) -> char const *"""
    return _oechem.OEMMFFTypeName(type)

def OEMMFFTypeIndex(type: 'unsigned int') -> "unsigned int":
    """OEMMFFTypeIndex(unsigned int type) -> unsigned int"""
    return _oechem.OEMMFFTypeIndex(type)

def OEMMFFRemapElement(from_element: 'unsigned int', to_element: 'unsigned int') -> "void":
    """OEMMFFRemapElement(unsigned int from_element, unsigned int to_element)"""
    return _oechem.OEMMFFRemapElement(from_element, to_element)

def OEMMFFClearRemappedElements() -> "void":
    """OEMMFFClearRemappedElements()"""
    return _oechem.OEMMFFClearRemappedElements()

def OEMMFF94InitialCharges(mol: 'OEMolBase') -> "bool":
    """OEMMFF94InitialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEMMFF94InitialCharges(mol)

def OEMMFF94PartialCharges(mol: 'OEMolBase') -> "bool":
    """OEMMFF94PartialCharges(OEMolBase mol) -> bool"""
    return _oechem.OEMMFF94PartialCharges(mol)

def OEUncolorMol(*args) -> "bool":
    """
    OEUncolorMol(OEMolBase uncoloredcmol, OEMolBase mol, unsigned int uncolortype) -> bool
    OEUncolorMol(OEMolBase uncoloredcmol, OEMolBase mol) -> bool
    OEUncolorMol(OEMolBase moltouncolor, unsigned int uncolortype) -> bool
    OEUncolorMol(OEMolBase moltouncolor) -> bool
    """
    return _oechem.OEUncolorMol(*args)

def OEGetPackedCoords(*args) -> "void":
    """
    OEGetPackedCoords(OEMolBase mol, float * coords)
    OEGetPackedCoords(OEMolBase mol, double * coords)
    """
    return _oechem.OEGetPackedCoords(*args)

def OESetPackedCoords(*args) -> "void":
    """
    OESetPackedCoords(OEMolBase mol, float const * coords)
    OESetPackedCoords(OEMolBase mol, double const * coords)
    """
    return _oechem.OESetPackedCoords(*args)

def OEGetDistance(*args) -> "double":
    """
    OEGetDistance(OEMolBase arg1, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance(OEMolBase ma, OEAtomBase a, OEMolBase mb, OEAtomBase b) -> double
    OEGetDistance(OEConfBase conf, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance(OEConfBase ca, OEAtomBase a, OEConfBase cb, OEAtomBase b) -> double
    """
    return _oechem.OEGetDistance(*args)

def OEGetDistance2(*args) -> "double":
    """
    OEGetDistance2(OEMolBase arg1, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance2(OEMolBase ma, OEAtomBase a, OEMolBase mb, OEAtomBase b) -> double
    OEGetDistance2(OEConfBase conf, OEAtomBase a, OEAtomBase b) -> double
    OEGetDistance2(OEConfBase ca, OEAtomBase a, OEConfBase cb, OEAtomBase b) -> double
    """
    return _oechem.OEGetDistance2(*args)

def OEGetAngle(*args) -> "double":
    """
    OEGetAngle(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c) -> double
    OEGetAngle(OEMolBase ma, OEAtomBase a, OEMolBase mb, OEAtomBase b, OEMolBase mc, OEAtomBase c) -> double
    OEGetAngle(OEConfBase conf, OEAtomBase a, OEAtomBase b, OEAtomBase c) -> double
    OEGetAngle(OEConfBase ca, OEAtomBase a, OEConfBase cb, OEAtomBase b, OEConfBase cc, OEAtomBase c) -> double
    """
    return _oechem.OEGetAngle(*args)

def OEGetAbsTorsion(*args) -> "double":
    """
    OEGetAbsTorsion(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    OEGetAbsTorsion(OEConfBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    """
    return _oechem.OEGetAbsTorsion(*args)

def OESetDistance(mol: 'OEMolBase', a: 'OEAtomBase', b: 'OEAtomBase', dist: 'double') -> "bool":
    """OESetDistance(OEMolBase mol, OEAtomBase a, OEAtomBase b, double dist) -> bool"""
    return _oechem.OESetDistance(mol, a, b, dist)

def OESetAngle(mol: 'OEMolBase', a: 'OEAtomBase', b: 'OEAtomBase', c: 'OEAtomBase', ang: 'double', axis: 'double *'=None) -> "bool":
    """
    OESetAngle(OEMolBase mol, OEAtomBase a, OEAtomBase b, OEAtomBase c, double ang, double * axis=None) -> bool
    OESetAngle(OEMolBase mol, OEAtomBase a, OEAtomBase b, OEAtomBase c, double ang) -> bool
    """
    return _oechem.OESetAngle(mol, a, b, c, ang, axis)

def OETranslate(*args) -> "void":
    """
    OETranslate(OEMolBase mol, double const * v)
    OETranslate(OEMolBase mol, float const * v)
    OETranslate(OEConfBase conf, double const * v)
    OETranslate(OEConfBase conf, float const * v)
    OETranslate(OEMCMolBase mcmol, double const * v)
    OETranslate(OEMCMolBase mcmol, float const * v)
    """
    return _oechem.OETranslate(*args)

def OERotate(*args) -> "void":
    """
    OERotate(OEMolBase mol, double const * m)
    OERotate(OEMolBase mol, float const * m)
    OERotate(OEConfBase conf, double const * m)
    OERotate(OEConfBase conf, float const * m)
    OERotate(OEMCMolBase mcmol, double const * m)
    OERotate(OEMCMolBase mcmol, float const * m)
    """
    return _oechem.OERotate(*args)

def OEEulerRotate(*args) -> "void":
    """
    OEEulerRotate(OEMolBase mol, double const * angles)
    OEEulerRotate(OEConfBase conf, double const * angles)
    OEEulerRotate(OEMCMolBase mcmol, double const * angles)
    """
    return _oechem.OEEulerRotate(*args)

def OECenter(*args) -> "void":
    """
    OECenter(OEMolBase arg1, double * t=None)
    OECenter(OEMolBase arg1)
    OECenter(OEConfBase conf, double * t=None)
    OECenter(OEConfBase conf)
    OECenter(OEMCMolBase mcmol, double * t=None)
    OECenter(OEMCMolBase mcmol)
    """
    return _oechem.OECenter(*args)

def OEGetCenterOfMass(mol: 'OEMolBase', com: 'float *', weightAtoms: 'bool'=False) -> "void":
    """
    OEGetCenterOfMass(OEMolBase mol, float * com, bool weightAtoms=False)
    OEGetCenterOfMass(OEMolBase mol, float * com)
    """
    return _oechem.OEGetCenterOfMass(mol, com, weightAtoms)

def OEWeightedRMSD(*args) -> "double":
    """
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True, bool heavyOnly=True) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, bool automorph=True) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match, bool overlay=False) -> double
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, OEMatchBase match) -> double
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True, bool heavyOnly=True) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, bool automorph=True) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMCMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OEWeightedRMSD(OEMolBase ref, OEMolBase fit, double const * weight, double * rmsdArray, OEMatchBase match) -> bool
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size, bool overlay=False) -> double
    OEWeightedRMSD(float const * refcrds, float const * fitcrds, float const * weight, unsigned int size) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size, bool overlay=False, double * rot=None) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size, bool overlay=False) -> double
    OEWeightedRMSD(double const * refcrds, double const * fitcrds, double const * weight, unsigned int size) -> double
    """
    return _oechem.OEWeightedRMSD(*args)

def OESymmetryNumber(*args) -> "bool":
    """
    OESymmetryNumber(OEMolBase mol, bool useH=True, double threshold=0.05) -> unsigned int
    OESymmetryNumber(OEMolBase mol, bool useH=True) -> unsigned int
    OESymmetryNumber(OEMolBase mol) -> unsigned int
    OESymmetryNumber(OEMCMolBase mol, unsigned int * symCtArray, bool useH=True, double threshold=0.05) -> bool
    OESymmetryNumber(OEMCMolBase mol, unsigned int * symCtArray, bool useH=True) -> bool
    OESymmetryNumber(OEMCMolBase mol, unsigned int * symCtArray) -> bool
    """
    return _oechem.OESymmetryNumber(*args)
class OETorsion(object):
    """Proxy of C++ OEChem::OETorsion class."""

    thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
    __repr__ = _swig_repr
    a = _swig_property(_oechem.OETorsion_a_get, _oechem.OETorsion_a_set)
    b = _swig_property(_oechem.OETorsion_b_get, _oechem.OETorsion_b_set)
    c = _swig_property(_oechem.OETorsion_c_get, _oechem.OETorsion_c_set)
    d = _swig_property(_oechem.OETorsion_d_get, _oechem.OETorsion_d_set)
    radians = _swig_property(_oechem.OETorsion_radians_get, _oechem.OETorsion_radians_set)

    def __init__(self, *args):
        """
        __init__(OEChem::OETorsion self) -> OETorsion
        __init__(OEChem::OETorsion self, OEAtomBase a1, OEAtomBase a2, OEAtomBase a3, OEAtomBase a4, double rads) -> OETorsion
        """
        this = _oechem.new_OETorsion(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OETorsion
    __del__ = lambda self: None
OETorsion_swigregister = _oechem.OETorsion_swigregister
OETorsion_swigregister(OETorsion)


def OEGetTorsions(*args) -> "OESystem::OEIterBase< OEChem::OETorsion > *":
    """
    OEGetTorsions(OEMolBase arg1, OEUnaryBondPred isRotor) -> OESystem::OEIterBase< OEChem::OETorsion >
    OEGetTorsions(OEMolBase arg1) -> OESystem::OEIterBase< OEChem::OETorsion > *
    """
    return _oechem.OEGetTorsions(*args)

def OERandomizeTorsions(*args) -> "bool":
    """
    OERandomizeTorsions(OEMolBase arg1, double maxRadians) -> bool
    OERandomizeTorsions(OEMolBase arg1, double maxRadians, OEUnaryBondPred isRotor) -> bool
    """
    return _oechem.OERandomizeTorsions(*args)

def OEInvertCenter(*args) -> "bool":
    """
    OEInvertCenter(OEMolBase mol, OEAtomBase atom) -> bool
    OEInvertCenter(OEMolBase mol, OEAtomBase atom, OEAtomBase ref1, OEAtomBase ref2) -> bool
    """
    return _oechem.OEInvertCenter(*args)
class OETorsionIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OETorsion)> 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::OETorsion)> self) -> OETorsionIter
        __init__(OESystem::OEIter<(OEChem::OETorsion)> self, OETorsionIter rhs) -> OETorsionIter
        __init__(OESystem::OEIter<(OEChem::OETorsion)> self, OESystem::OEIterBase< OEChem::OETorsion > * rhs) -> OETorsionIter
        __init__(OESystem::OEIter<(OEChem::OETorsion)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OETorsion >::NonConstA > * rhs) -> OETorsionIter
        """
        this = _oechem.new_OETorsionIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OETorsionIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OETorsion > *":
        """Copy(OETorsionIter self) -> OESystem::OEIterBase< OEChem::OETorsion > *"""
        return _oechem.OETorsionIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OETorsionIter self, OESystem::OEIterBase< OEChem::OETorsion > * ib)
        Push(OETorsionIter self, OETorsionIter iter)
        """
        return _oechem.OETorsionIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OETorsion,OEChem::OETorsion > const &') -> "void":
        """Sort(OETorsionIter self, OESystem::OEBinaryPredicate< OEChem::OETorsion,OEChem::OETorsion > const & sort_criterion)"""
        return _oechem.OETorsionIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """ToFirst(OETorsionIter self) -> OETorsionIter"""
        return _oechem.OETorsionIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """ToLast(OETorsionIter self) -> OETorsionIter"""
        return _oechem.OETorsionIter_ToLast(self)


    def __ref__(self) -> "OEChem::OETorsion &":
        """__ref__(OETorsionIter self) -> OETorsion"""
        return _oechem.OETorsionIter___ref__(self)


    def IsValid(self):
      return _oechem.OETorsionIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OETorsionIter self) -> PyObject *"""
        return _oechem.OETorsionIter_next(self)


    def Target(self) -> "OEChem::OETorsion &":
        """Target(OETorsionIter self) -> OETorsion"""
        return _oechem.OETorsionIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """
        Next(OETorsionIter self) -> OETorsionIter
        Next(OETorsionIter self, int i) -> OETorsionIter
        """
        return _oechem.OETorsionIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OETorsion > &":
        """
        Prev(OETorsionIter self) -> OETorsionIter
        Prev(OETorsionIter self, int i) -> OETorsionIter
        """
        return _oechem.OETorsionIter_Prev(self, *args)

OETorsionIter_swigregister = _oechem.OETorsionIter_swigregister
OETorsionIter_swigregister(OETorsionIter)

class oemolstreambase(object):
    """Proxy of C++ OEChem::oemolstreambase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_oemolstreambase
    __del__ = lambda self: None

    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolstreambase self, unsigned int format) -> bool"""
        return _oechem.oemolstreambase_SetFormat(self, format)


    def GetFormat(self) -> "unsigned int":
        """GetFormat(oemolstreambase self) -> unsigned int"""
        return _oechem.oemolstreambase_GetFormat(self)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolstreambase self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolstreambase_SetFlavor(self, format, flavor)


    def GetFlavor(self, format: 'unsigned int') -> "unsigned int":
        """GetFlavor(oemolstreambase self, unsigned int format) -> unsigned int"""
        return _oechem.oemolstreambase_GetFlavor(self, format)


    def HasBinaryIOHandler(self) -> "bool":
        """HasBinaryIOHandler(oemolstreambase self) -> bool"""
        return _oechem.oemolstreambase_HasBinaryIOHandler(self)


    def GetBinaryIOHandler(self) -> "OESystem::OEBinaryIOHandlerBase &":
        """GetBinaryIOHandler(oemolstreambase self) -> OEBinaryIOHandlerBase"""
        return _oechem.oemolstreambase_GetBinaryIOHandler(self)


    def InitializeBinaryIOHandler(self) -> "bool":
        """InitializeBinaryIOHandler(oemolstreambase self) -> bool"""
        return _oechem.oemolstreambase_InitializeBinaryIOHandler(self)


    def GetCSVHeader(self) -> "OEChem::OECSVHeader &":
        """GetCSVHeader(oemolstreambase self) -> OECSVHeader"""
        return _oechem.oemolstreambase_GetCSVHeader(self)


    def ClearCSVHeader(self) -> "void":
        """ClearCSVHeader(oemolstreambase self)"""
        return _oechem.oemolstreambase_ClearCSVHeader(self)


    def Getgz(self) -> "bool":
        """Getgz(oemolstreambase self) -> bool"""
        return _oechem.oemolstreambase_Getgz(self)


    def open(self, *args) -> "bool":
        """
        open(oemolstreambase self, char const * name) -> bool
        open(oemolstreambase self) -> bool
        """
        return _oechem.oemolstreambase_open(self, *args)


    def GetFileName(self) -> "std::string const &":
        """GetFileName(oemolstreambase self) -> std::string const &"""
        return _oechem.oemolstreambase_GetFileName(self)


    def close(self) -> "void":
        """close(oemolstreambase self)"""
        return _oechem.oemolstreambase_close(self)

oemolstreambase_swigregister = _oechem.oemolstreambase_swigregister
oemolstreambase_swigregister(oemolstreambase)

class oemolistream(oemolstreambase):
    """Proxy of C++ OEChem::oemolistream 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__(OEChem::oemolistream self) -> oemolistream
        __init__(OEChem::oemolistream self, char const * arg2) -> oemolistream
        __init__(OEChem::oemolistream self, std::string const & fn) -> oemolistream
        __init__(OEChem::oemolistream self, oeistream arg2, bool owned=True) -> oemolistream
        __init__(OEChem::oemolistream self, oeistream arg2) -> oemolistream
        """
        this = _oechem.new_oemolistream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemolistream
    __del__ = lambda self: None

    def oeistreamref(self) -> "OEPlatform::oeistream &":
        """oeistreamref(oemolistream self) -> oeistream"""
        return _oechem.oemolistream_oeistreamref(self)


    def GetFileStream(self) -> "OEPlatform::oeifstream *":
        """GetFileStream(oemolistream self) -> oeifstream"""
        return _oechem.oemolistream_GetFileStream(self)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolistream self, unsigned int format) -> bool"""
        return _oechem.oemolistream_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolistream self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolistream_SetFlavor(self, format, flavor)


    def Setgz(self, gz: 'bool', sptr: 'oeistream'=None, owned: 'bool'=False) -> "bool":
        """
        Setgz(oemolistream self, bool gz, oeistream sptr=None, bool owned=False) -> bool
        Setgz(oemolistream self, bool gz, oeistream sptr=None) -> bool
        Setgz(oemolistream self, bool gz) -> bool
        """
        return _oechem.oemolistream_Setgz(self, gz, sptr, owned)


    def close(self) -> "void":
        """close(oemolistream self)"""
        return _oechem.oemolistream_close(self)


    def getbyte(self) -> "int":
        """getbyte(oemolistream self) -> int"""
        return _oechem.oemolistream_getbyte(self)


    def skipbyte(self) -> "bool":
        """skipbyte(oemolistream self) -> bool"""
        return _oechem.oemolistream_skipbyte(self)


    def peekbyte(self) -> "int":
        """peekbyte(oemolistream self) -> int"""
        return _oechem.oemolistream_peekbyte(self)


    def skip(self, len: 'oefpos_t') -> "bool":
        """skip(oemolistream self, oefpos_t len) -> bool"""
        return _oechem.oemolistream_skip(self, len)


    def skipline(self) -> "bool":
        """skipline(oemolistream self) -> bool"""
        return _oechem.oemolistream_skipline(self)


    def seek(self, pos: 'oefpos_t') -> "void":
        """seek(oemolistream self, oefpos_t pos)"""
        return _oechem.oemolistream_seek(self, pos)


    def rewind(self) -> "void":
        """rewind(oemolistream self)"""
        return _oechem.oemolistream_rewind(self)


    def size(self) -> "oefpos_t":
        """size(oemolistream self) -> oefpos_t"""
        return _oechem.oemolistream_size(self)


    def tell(self) -> "oefpos_t":
        """tell(oemolistream self) -> oefpos_t"""
        return _oechem.oemolistream_tell(self)


    def eof(self) -> "bool":
        """eof(oemolistream self) -> bool"""
        return _oechem.oemolistream_eof(self)


    def IsValid(self):
      return _oechem.oemolistream___nonzero__(self)



    def getline(self, *args) -> "bool":
        """
        getline(oemolistream self, char * buffer, oesize_t max) -> bool
        getline(oemolistream self, std::string & buffer) -> bool
        """
        return _oechem.oemolistream_getline(self, *args)


    def read(self, buffer: 'unsigned char *', len: 'oesize_t') -> "bool":
        """read(oemolistream self, unsigned char * buffer, oesize_t len) -> bool"""
        return _oechem.oemolistream_read(self, buffer, len)


    def SetConfTest(self, arg2: 'OEConfTestBase') -> "bool":
        """SetConfTest(oemolistream self, OEConfTestBase arg2) -> bool"""
        return _oechem.oemolistream_SetConfTest(self, arg2)


    def GetConfTest(self, *args) -> "OEChem::OEConfTestBase const &":
        """
        GetConfTest(oemolistream self) -> OEConfTestBase
        GetConfTest(oemolistream self) -> OEConfTestBase
        """
        return _oechem.oemolistream_GetConfTest(self, *args)


    def PeekNextMol(self) -> "OEChem::OEMolBase *":
        """PeekNextMol(oemolistream self) -> OEMolBase"""
        return _oechem.oemolistream_PeekNextMol(self)


    def GetNextMol(self) -> "OEChem::OEMolBase *":
        """GetNextMol(oemolistream self) -> OEMolBase"""
        return _oechem.oemolistream_GetNextMol(self)


    def PushNextMol(self, mol: 'OEMolBase', pos: 'oefpos_t'=0) -> "void":
        """
        PushNextMol(oemolistream self, OEMolBase mol, oefpos_t pos=0)
        PushNextMol(oemolistream self, OEMolBase mol)
        """
        return _oechem.oemolistream_PushNextMol(self, mol, pos)


    def HasNextMol(self) -> "bool":
        """HasNextMol(oemolistream self) -> bool"""
        return _oechem.oemolistream_HasNextMol(self)


    def ClearCache(self) -> "void":
        """ClearCache(oemolistream self)"""
        return _oechem.oemolistream_ClearCache(self)


    def GetMolBases(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetMolBases(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.oemolistream_GetMolBases(self)


    def GetMCMolBases(self, single: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
        """
        GetMCMolBases(oemolistream self, bool single=False) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
        GetMCMolBases(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *
        """
        return _oechem.oemolistream_GetMCMolBases(self, single)


    def GetReadFailureCt(self) -> "unsigned int":
        """GetReadFailureCt(oemolistream self) -> unsigned int"""
        return _oechem.oemolistream_GetReadFailureCt(self)


    def IncrementReadFailureCt(self) -> "void":
        """IncrementReadFailureCt(oemolistream self)"""
        return _oechem.oemolistream_IncrementReadFailureCt(self)


    def ResetReadFailureCt(self) -> "void":
        """ResetReadFailureCt(oemolistream self)"""
        return _oechem.oemolistream_ResetReadFailureCt(self)


    def GetMolBaseIter(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetMolBaseIter(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.oemolistream_GetMolBaseIter(self)


    def GetMCMolBaseIter(self, single: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEMCMolBase > *":
        """
        GetMCMolBaseIter(oemolistream self, bool single=False) -> OESystem::OEIterBase< OEChem::OEMCMolBase >
        GetMCMolBaseIter(oemolistream self) -> OESystem::OEIterBase< OEChem::OEMCMolBase > *
        """
        return _oechem.oemolistream_GetMCMolBaseIter(self, single)


    def SetTracer(self, tracer: 'OEPyTracerBase', owntracer: 'bool') -> "void":
        """SetTracer(oemolistream self, OEPyTracerBase tracer, bool owntracer)"""
        return _oechem.oemolistream_SetTracer(self, tracer, owntracer)


    def GetOEGraphMols(self):
        mol=OEGraphMol()
        while OEReadMolecule(self, mol):
            yield mol



    def GetOEMols(self):
        mol=OEMol()
        while OEReadMolecule(self, mol):
            yield mol



    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def openstring(self, *args) -> "PyObject *":
        """
        openstring(oemolistream self, unsigned char const * buffer, oesize_t len) -> bool
        openstring(oemolistream self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oemolistream_openstring(self, *args)

oemolistream_swigregister = _oechem.oemolistream_swigregister
oemolistream_swigregister(oemolistream)

class oemolostream(oemolstreambase):
    """Proxy of C++ OEChem::oemolostream 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__ = _oechem.delete_oemolostream
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEChem::oemolostream self) -> oemolostream
        __init__(OEChem::oemolostream self, char const * name) -> oemolostream
        __init__(OEChem::oemolostream self, std::string const & fn) -> oemolostream
        __init__(OEChem::oemolostream self, oeostream arg2, bool owned=True) -> oemolostream
        __init__(OEChem::oemolostream self, oeostream arg2) -> oemolostream
        """
        this = _oechem.new_oemolostream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def oeostreamref(self) -> "OEPlatform::oeostream &":
        """oeostreamref(oemolostream self) -> oeostream"""
        return _oechem.oemolostream_oeostreamref(self)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolostream self, unsigned int format) -> bool"""
        return _oechem.oemolostream_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolostream self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolostream_SetFlavor(self, format, flavor)


    def Setgz(self, gz: 'bool', sptr: 'oeostream'=None, arg4: 'bool'=False) -> "bool":
        """
        Setgz(oemolostream self, bool gz, oeostream sptr=None, bool arg4=False) -> bool
        Setgz(oemolostream self, bool gz, oeostream sptr=None) -> bool
        Setgz(oemolostream self, bool gz) -> bool
        """
        return _oechem.oemolostream_Setgz(self, gz, sptr, arg4)


    def openstring(self, *args) -> "bool":
        """
        openstring(oemolostream self) -> bool
        openstring(oemolostream self, bool gzip) -> bool
        """
        return _oechem.oemolostream_openstring(self, *args)


    def close(self) -> "void":
        """close(oemolostream self)"""
        return _oechem.oemolostream_close(self)


    def IsValid(self):
      return _oechem.oemolostream___nonzero__(self)



    def tell(self) -> "oefpos_t":
        """tell(oemolostream self) -> oefpos_t"""
        return _oechem.oemolostream_tell(self)


    def put(self, c: 'char') -> "OEChem::oemolostream &":
        """put(oemolostream self, char c) -> oemolostream"""
        return _oechem.oemolostream_put(self, c)


    def write(self, str: 'char const *', size: 'oesize_t') -> "OEChem::oemolostream &":
        """write(oemolostream self, char const * str, oesize_t size) -> oemolostream"""
        return _oechem.oemolostream_write(self, str, size)


    def flush(self) -> "OEChem::oemolostream &":
        """flush(oemolostream self) -> oemolostream"""
        return _oechem.oemolostream_flush(self)


    def SetString(self, *args) -> "void":
        """
        SetString(oemolostream self, char const * c)
        SetString(oemolostream self, unsigned char const * c, oesize_t size)
        """
        return _oechem.oemolostream_SetString(self, *args)


    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def GetString(self) -> "PyObject *":
        """GetString(oemolostream self) -> PyObject *"""
        return _oechem.oemolostream_GetString(self)

oemolostream_swigregister = _oechem.oemolostream_swigregister
oemolostream_swigregister(oemolostream)


def OEWriteHeader(*args) -> "bool":
    """
    OEWriteHeader(oeostream str, OEHeader header, OEBinaryIOHandlerBase hand) -> bool
    OEWriteHeader(oemolostream str, OEHeader header) -> bool
    OEWriteHeader(oemolothread str, OEHeader header) -> bool
    """
    return _oechem.OEWriteHeader(*args)

def OEReadHeader(*args) -> "bool":
    """
    OEReadHeader(oeistream str, OEHeader header, OEBinaryIOHandlerBase hand) -> bool
    OEReadHeader(oemolistream str, OEHeader header) -> bool
    OEReadHeader(oemolithread str, OEHeader header) -> bool
    """
    return _oechem.OEReadHeader(*args)

def OEPreserveRotCompress(str: 'oemolstreambase') -> "bool":
    """OEPreserveRotCompress(oemolstreambase str) -> bool"""
    return _oechem.OEPreserveRotCompress(str)

def OEReadMolFromString(*args) -> "bool":
    """
    OEReadMolFromString(OEMolBase outMol, std::string const & format, std::string const & input) -> bool
    OEReadMolFromString(OEMolBase outMol, unsigned int format, bool gzip, std::string const & input) -> bool
    OEReadMolFromString(OEMolBase outMol, unsigned int format, unsigned int flavor, bool gzip, std::string const & input) -> bool
    OEReadMolFromString(OEMCMolBase outMol, std::string const & format, std::string const & input) -> bool
    OEReadMolFromString(OEMCMolBase outMol, unsigned int format, bool gzip, std::string const & input) -> bool
    OEReadMolFromString(OEMCMolBase outMol, unsigned int format, unsigned int flavor, bool gzip, std::string const & input) -> bool
    """
    return _oechem.OEReadMolFromString(*args)

def OEWriteMolToString(*args) -> "bool":
    """
    OEWriteMolToString(std::string const & format, OEMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, bool gzip, OEMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, unsigned int flavor, bool gzip, OEMolBase mol) -> std::string
    OEWriteMolToString(std::string const & format, OEMCMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, bool gzip, OEMCMolBase mol) -> std::string
    OEWriteMolToString(unsigned int format, unsigned int flavor, bool gzip, OEMCMolBase mol) -> std::string
    OEWriteMolToString(std::string & data, unsigned int format, bool gzip, OEMolBase mol) -> bool
    OEWriteMolToString(std::string & data, unsigned int format, unsigned int flavor, bool gzip, OEMolBase mol) -> bool
    OEWriteMolToString(std::string & data, unsigned int format, bool gzip, OEMCMolBase mol) -> bool
    OEWriteMolToString(std::string & data, unsigned int format, unsigned int flavor, bool gzip, OEMCMolBase mol) -> bool
    """
    return _oechem.OEWriteMolToString(*args)

def OEReadJSONString(*args) -> "bool":
    """
    OEReadJSONString(OEMolBase mol, char const * json) -> bool
    OEReadJSONString(OEMCMolBase mol, char const * json) -> bool
    OEReadJSONString(OEMolBase mol, std::string const & json) -> bool
    OEReadJSONString(OEMCMolBase mol, std::string const & json) -> bool
    """
    return _oechem.OEReadJSONString(*args)

def OEWriteJSONString(*args) -> "std::string":
    """
    OEWriteJSONString(OEMolBase mol, unsigned int flavor) -> std::string
    OEWriteJSONString(OEMolBase mol) -> std::string
    OEWriteJSONString(OEMCMolBase mol, unsigned int flavor) -> std::string
    OEWriteJSONString(OEMCMolBase mol) -> std::string
    """
    return _oechem.OEWriteJSONString(*args)

def OEJSONToMol(*args) -> "bool":
    """
    OEJSONToMol(OEMolBase mol, char const * json) -> bool
    OEJSONToMol(OEMCMolBase mol, char const * json) -> bool
    OEJSONToMol(OEMolBase mol, std::string const & json) -> bool
    OEJSONToMol(OEMCMolBase mol, std::string const & json) -> bool
    """
    return _oechem.OEJSONToMol(*args)

def OEMolToJSON(*args) -> "std::string":
    """
    OEMolToJSON(OEMolBase mol, unsigned int flavor) -> std::string
    OEMolToJSON(OEMolBase mol) -> std::string
    OEMolToJSON(OEMCMolBase mol, unsigned int flavor) -> std::string
    OEMolToJSON(OEMCMolBase mol) -> std::string
    """
    return _oechem.OEMolToJSON(*args)

def OEWriteJSONFile(*args) -> "bool":
    """
    OEWriteJSONFile(oemolostream os, OEMolBase mol, unsigned int flavor) -> bool
    OEWriteJSONFile(oemolostream os, OEMolBase mol) -> bool
    OEWriteJSONFile(oemolostream os, OEMCMolBase mol, unsigned int flavor) -> bool
    OEWriteJSONFile(oemolostream os, OEMCMolBase mol) -> bool
    """
    return _oechem.OEWriteJSONFile(*args)

def OEReadJSONFile(*args) -> "bool":
    """
    OEReadJSONFile(oemolistream ifs, OEMolBase mol) -> bool
    OEReadJSONFile(oemolistream ifs, OEMCMolBase mol) -> bool
    """
    return _oechem.OEReadJSONFile(*args)

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

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

def OEWriteMolToBytes(*args) -> "PyObject *":
    """
    OEWriteMolToBytes(char const * format, OEMolBase mol) -> PyObject
    OEWriteMolToBytes(char const * format, OEMCMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, bool gzip, OEMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, unsigned int flavor, bool gzip, OEMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, bool gzip, OEMCMolBase mol) -> PyObject
    OEWriteMolToBytes(unsigned int format, unsigned int flavor, bool gzip, OEMCMolBase mol) -> PyObject *
    """
    return _oechem.OEWriteMolToBytes(*args)

def OEReadJSONBytes(*args) -> "PyObject *":
    """
    OEReadJSONBytes(OEMolBase mol, PyObject * bytes) -> PyObject
    OEReadJSONBytes(OEMCMolBase mol, PyObject * bytes) -> PyObject *
    """
    return _oechem.OEReadJSONBytes(*args)

def OEWriteJSONBytes(*args) -> "PyObject *":
    """
    OEWriteJSONBytes(OEMolBase mol, unsigned int flavor) -> PyObject
    OEWriteJSONBytes(OEMolBase mol) -> PyObject
    OEWriteJSONBytes(OEMCMolBase mol, unsigned int flavor) -> PyObject
    OEWriteJSONBytes(OEMCMolBase mol) -> PyObject *
    """
    return _oechem.OEWriteJSONBytes(*args)

def OEJSONBytesToMol(*args) -> "PyObject *":
    """
    OEJSONBytesToMol(OEMolBase mol, PyObject * json) -> PyObject
    OEJSONBytesToMol(OEMCMolBase mol, PyObject * json) -> PyObject *
    """
    return _oechem.OEJSONBytesToMol(*args)

def OEMolToJSONBytes(*args) -> "PyObject *":
    """
    OEMolToJSONBytes(OEMCMolBase mol, unsigned int flavor) -> PyObject
    OEMolToJSONBytes(OEMCMolBase mol) -> PyObject
    OEMolToJSONBytes(OEMolBase mol, unsigned int flavor) -> PyObject
    OEMolToJSONBytes(OEMolBase mol) -> PyObject *
    """
    return _oechem.OEMolToJSONBytes(*args)

def OEFixUnicode(*args) -> "void":
    """
    OEFixUnicode(OEMolBase mol)
    OEFixUnicode(OEMCMolBase mol)
    """
    return _oechem.OEFixUnicode(*args)

def OEJSONBytesToBase(c: 'OEBase', json: 'PyObject *') -> "PyObject *":
    """OEJSONBytesToBase(OEBase c, PyObject * json) -> PyObject *"""
    return _oechem.OEJSONBytesToBase(c, json)

def OEBaseToJSONBytes(c: 'OEBase', flavor: 'unsigned int'=0) -> "PyObject *":
    """
    OEBaseToJSONBytes(OEBase c, unsigned int flavor=0) -> PyObject
    OEBaseToJSONBytes(OEBase c) -> PyObject *
    """
    return _oechem.OEBaseToJSONBytes(c, flavor)
class oemolthreadbase(oemolstreambase):
    """Proxy of C++ OEChem::oemolthreadbase 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
    PROTECTED_BUFFER_SIZE = _oechem.oemolthreadbase_PROTECTED_BUFFER_SIZE
    __swig_destroy__ = _oechem.delete_oemolthreadbase
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.oemolthreadbase___nonzero__(self)



    def GetCSVHeaderMutex(self) -> "OEPlatform::OEMutex &":
        """GetCSVHeaderMutex(oemolthreadbase self) -> OEPlatform::OEMutex &"""
        return _oechem.oemolthreadbase_GetCSVHeaderMutex(self)


    def close(self) -> "void":
        """close(oemolthreadbase self)"""
        return _oechem.oemolthreadbase_close(self)


    def GetMol(self) -> "PyObject *":
        """GetMol(oemolthreadbase self) -> PyObject *"""
        return _oechem.oemolthreadbase_GetMol(self)


    def PeekMol(self) -> "PyObject *":
        """PeekMol(oemolthreadbase self) -> PyObject *"""
        return _oechem.oemolthreadbase_PeekMol(self)


    def PutMol(self, bytes: 'PyObject *') -> "PyObject *":
        """PutMol(oemolthreadbase self, PyObject * bytes) -> PyObject *"""
        return _oechem.oemolthreadbase_PutMol(self, bytes)

oemolthreadbase_swigregister = _oechem.oemolthreadbase_swigregister
oemolthreadbase_swigregister(oemolthreadbase)

class oemolithread(oemolthreadbase):
    """Proxy of C++ OEChem::oemolithread 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__(OEChem::oemolithread self) -> oemolithread
        __init__(OEChem::oemolithread self, char const * fn) -> oemolithread
        __init__(OEChem::oemolithread self, std::string const & fn) -> oemolithread
        """
        this = _oechem.new_oemolithread(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemolithread
    __del__ = lambda self: None

    def close(self) -> "void":
        """close(oemolithread self)"""
        return _oechem.oemolithread_close(self)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolithread self, unsigned int format) -> bool"""
        return _oechem.oemolithread_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolithread self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolithread_SetFlavor(self, format, flavor)


    def GetIStream(self) -> "OEPlatform::oeistream *":
        """GetIStream(oemolithread self) -> oeistream"""
        return _oechem.oemolithread_GetIStream(self)


    def GetMolStream(self) -> "OEChem::oemolistream *":
        """GetMolStream(oemolithread self) -> oemolistream"""
        return _oechem.oemolithread_GetMolStream(self)


    def GetOEGraphMols(self):
        mol=OEGraphMol()
        while OEReadMolecule(self, mol):
            yield mol



    def GetOEMols(self):
        mol=OEMol()
        while OEReadMolecule(self, mol):
            yield mol



    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def GetMolData(self):
        data = self.GetMol()
        while data is not None:
            yield data
            data = self.GetMol()



    def openstring(self, *args) -> "PyObject *":
        """
        openstring(oemolithread self, unsigned char const * buffer, oesize_t len, bool gz=False) -> bool
        openstring(oemolithread self, unsigned char const * buffer, oesize_t len) -> bool
        openstring(oemolithread self, PyObject * bytes, bool gz=False) -> PyObject
        openstring(oemolithread self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oemolithread_openstring(self, *args)

oemolithread_swigregister = _oechem.oemolithread_swigregister
oemolithread_swigregister(oemolithread)

class oemolothread(oemolthreadbase):
    """Proxy of C++ OEChem::oemolothread 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__(OEChem::oemolothread self) -> oemolothread
        __init__(OEChem::oemolothread self, char const * fn) -> oemolothread
        __init__(OEChem::oemolothread self, std::string const & fn) -> oemolothread
        """
        this = _oechem.new_oemolothread(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemolothread
    __del__ = lambda self: None

    def close(self) -> "void":
        """close(oemolothread self)"""
        return _oechem.oemolothread_close(self)


    def openstring(self, gz: 'bool'=False) -> "bool":
        """
        openstring(oemolothread self, bool gz=False) -> bool
        openstring(oemolothread self) -> bool
        """
        return _oechem.oemolothread_openstring(self, gz)


    def SetFormat(self, format: 'unsigned int') -> "bool":
        """SetFormat(oemolothread self, unsigned int format) -> bool"""
        return _oechem.oemolothread_SetFormat(self, format)


    def SetFlavor(self, format: 'unsigned int', flavor: 'unsigned int') -> "bool":
        """SetFlavor(oemolothread self, unsigned int format, unsigned int flavor) -> bool"""
        return _oechem.oemolothread_SetFlavor(self, format, flavor)


    def GetOStream(self) -> "OEPlatform::oeostream *":
        """GetOStream(oemolothread self) -> oeostream"""
        return _oechem.oemolothread_GetOStream(self)


    def GetMolStream(self) -> "OEChem::oemolostream *":
        """GetMolStream(oemolothread self) -> oemolostream"""
        return _oechem.oemolothread_GetMolStream(self)


    def __call__(self, *args):
        if not self.open(*args):
            raise IOError("Unable to open file %s" % args)
        return self



    def __enter__(self):
        return self



    def __exit__(self, *args, **kwargs):
        return self.close()



    def GetString(self) -> "PyObject *":
        """GetString(oemolothread self) -> PyObject *"""
        return _oechem.oemolothread_GetString(self)

oemolothread_swigregister = _oechem.oemolothread_swigregister
oemolothread_swigregister(oemolothread)


def OEReadMolecule(*args) -> "bool":
    """
    OEReadMolecule(oemolistream ifs, OEMCMolBase mol) -> bool
    OEReadMolecule(oemolistream ifs, OEQMolBase mol) -> bool
    OEReadMolecule(oemolistream ifs, OEMolBase mol) -> bool
    OEReadMolecule(oemolistream ifs, OEChem::OEMol & mol) -> bool
    OEReadMolecule(oemolistream ifs, OEChem::OEQMol & mol) -> bool
    OEReadMolecule(oemolistream ifs, OEChem::OEGraphMol & mol) -> bool
    OEReadMolecule(oemolithread ifs, OEMolBase mol) -> bool
    OEReadMolecule(oemolithread ifs, OEMCMolBase mol) -> bool
    OEReadMolecule(oemolithread ifs, OEQMolBase mol) -> bool
    """
    return _oechem.OEReadMolecule(*args)

def OEWriteMolecule(*args) -> "unsigned int":
    """
    OEWriteMolecule(oemolostream ofs, OEMCMolBase mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEQMolBase mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEMolBase mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEChem::OEMol & mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEChem::OEQMol & mol) -> unsigned int
    OEWriteMolecule(oemolostream ofs, OEChem::OEGraphMol & mol) -> unsigned int
    OEWriteMolecule(oemolothread ofs, OEMolBase mol) -> unsigned int
    OEWriteMolecule(oemolothread arg1, OEMCMolBase arg2) -> unsigned int
    OEWriteMolecule(oemolothread arg1, OEQMolBase arg2) -> unsigned int
    """
    return _oechem.OEWriteMolecule(*args)
class OETokenizerBase(object):
    """Proxy of C++ OEChem::OETokenizerBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OETokenizerBase
    __del__ = lambda self: None

    def GetNextToken(self, ifs: 'oeistream') -> "std::string *":
        """GetNextToken(OETokenizerBase self, oeistream ifs) -> std::string *"""
        return _oechem.OETokenizerBase_GetNextToken(self, ifs)


    def ParseTitle(self, data: 'std::string const &') -> "std::string":
        """ParseTitle(OETokenizerBase self, std::string const & data) -> std::string"""
        return _oechem.OETokenizerBase_ParseTitle(self, data)


    def ReadNextToken(self, ifs: 'oeistream', tags: 'std::set< std::string > &') -> "bool":
        """ReadNextToken(OETokenizerBase self, oeistream ifs, std::set< std::string > & tags) -> bool"""
        return _oechem.OETokenizerBase_ReadNextToken(self, ifs, tags)

OETokenizerBase_swigregister = _oechem.OETokenizerBase_swigregister
OETokenizerBase_swigregister(OETokenizerBase)


def OEHasTokenizer(fmt: 'unsigned int') -> "bool":
    """OEHasTokenizer(unsigned int fmt) -> bool"""
    return _oechem.OEHasTokenizer(fmt)

def OEGetTokenizer(fmt: 'unsigned int', flavor: 'unsigned int') -> "OEChem::OETokenizerBase *":
    """OEGetTokenizer(unsigned int fmt, unsigned int flavor) -> OETokenizerBase"""
    return _oechem.OEGetTokenizer(fmt, flavor)

def OECreateSmiString(*args) -> "void":
    """
    OECreateSmiString(OEMolBase mol, unsigned int flavor) -> std::string
    OECreateSmiString(OEMolBase mol) -> std::string
    OECreateSmiString(std::string & str, OEMolBase mol, unsigned int flavor, std::pair< OEChem::OEAtomBase const *,OEChem::OEAtomBase const * > * atmord)
    OECreateSmiString(std::string & str, OEMolBase mol, unsigned int flavor)
    OECreateSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateSmiString(*args)

def OEGetSmiStringOrder(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetSmiStringOrder(OEMolBase mol, unsigned int flavor) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetSmiStringOrder(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetSmiStringOrder(*args)

def OECreateCanSmiString(*args) -> "void":
    """
    OECreateCanSmiString(OEMolBase mol) -> std::string
    OECreateCanSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateCanSmiString(*args)

def OECreateIsoSmiString(*args) -> "void":
    """
    OECreateIsoSmiString(OEMolBase mol) -> std::string
    OECreateIsoSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateIsoSmiString(*args)

def OECreateAbsSmiString(*args) -> "void":
    """
    OECreateAbsSmiString(OEMolBase mol) -> std::string
    OECreateAbsSmiString(std::string & str, OEMolBase mol, std::pair< OEChem::OEAtomBase const *,OEChem::OEAtomBase const * > * atmord)
    OECreateAbsSmiString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateAbsSmiString(*args)

def OECreateSlnString(*args) -> "void":
    """
    OECreateSlnString(OEMolBase mol, unsigned int flavor) -> std::string
    OECreateSlnString(OEMolBase mol) -> std::string
    OECreateSlnString(std::string & str, OEMolBase mol, unsigned int flavor)
    OECreateSlnString(std::string & str, OEMolBase mol)
    """
    return _oechem.OECreateSlnString(*args)

def OENormalize(*args) -> "void":
    """
    OENormalize(OEMolBase mol, OEChem::OENormModel const model)
    OENormalize(OEMolBase mol)
    """
    return _oechem.OENormalize(*args)

def OEInitDefaultHandler(hand: 'OEBinaryIOHandlerBase', compressMCMol: 'bool'=False) -> "bool":
    """
    OEInitDefaultHandler(OEBinaryIOHandlerBase hand, bool compressMCMol=False) -> bool
    OEInitDefaultHandler(OEBinaryIOHandlerBase hand) -> bool
    """
    return _oechem.OEInitDefaultHandler(hand, compressMCMol)

def OEInitHandler(hand: 'OEBinaryIOHandlerBase', readOptHex: 'char const *', writeOptHex: 'char const *') -> "bool":
    """OEInitHandler(OEBinaryIOHandlerBase hand, char const * readOptHex, char const * writeOptHex) -> bool"""
    return _oechem.OEInitHandler(hand, readOptHex, writeOptHex)

def OEBDefaultOpts() -> "char const *":
    """OEBDefaultOpts() -> char const *"""
    return _oechem.OEBDefaultOpts()

def OEBGZipCompressOpts() -> "char const *":
    """OEBGZipCompressOpts() -> char const *"""
    return _oechem.OEBGZipCompressOpts()

def OEBRotCompressOpts() -> "char const *":
    """OEBRotCompressOpts() -> char const *"""
    return _oechem.OEBRotCompressOpts()

def OEBAtomIntTypeOpts() -> "char const *":
    """OEBAtomIntTypeOpts() -> char const *"""
    return _oechem.OEBAtomIntTypeOpts()

def OEBCompressConfTorsionsOpts() -> "char const *":
    """OEBCompressConfTorsionsOpts() -> char const *"""
    return _oechem.OEBCompressConfTorsionsOpts()

def OEClearRotorCompressData(mol: 'OEMCMolBase') -> "bool":
    """OEClearRotorCompressData(OEMCMolBase mol) -> bool"""
    return _oechem.OEClearRotorCompressData(mol)

def OEPRECompress(*args) -> "bool":
    """
    OEPRECompress(oemolstreambase str) -> bool
    OEPRECompress(OEChem::OEMol & dst, OEMCMolBase src) -> bool
    """
    return _oechem.OEPRECompress(*args)

def OESweepRotorCompressHydrogens(mol: 'OEMCMolBase', retainPolar: 'bool'=False, retainStereo: 'bool'=False, retainIsotope: 'bool'=True) -> "bool":
    """
    OESweepRotorCompressHydrogens(OEMCMolBase mol, bool retainPolar=False, bool retainStereo=False, bool retainIsotope=True) -> bool
    OESweepRotorCompressHydrogens(OEMCMolBase mol, bool retainPolar=False, bool retainStereo=False) -> bool
    OESweepRotorCompressHydrogens(OEMCMolBase mol, bool retainPolar=False) -> bool
    OESweepRotorCompressHydrogens(OEMCMolBase mol) -> bool
    """
    return _oechem.OESweepRotorCompressHydrogens(mol, retainPolar, retainStereo, retainIsotope)
class OEMolBaseReadFxnT(OEReadFxnBase):
    """Proxy of C++ OESystem::OEReadFxn<(OEChem::OEMolBase)> class."""

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

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

    def __call__(self, arg2: 'oeistream', arg3: 'OEMolBase', arg4: 'OEULongLong', arg5: 'OEBinaryIOHandlerBase') -> "unsigned int":
        """__call__(OEMolBaseReadFxnT self, oeistream arg2, OEMolBase arg3, OEULongLong arg4, OEBinaryIOHandlerBase arg5) -> unsigned int"""
        return _oechem.OEMolBaseReadFxnT___call__(self, arg2, arg3, arg4, arg5)

    __swig_destroy__ = _oechem.delete_OEMolBaseReadFxnT
    __del__ = lambda self: None
OEMolBaseReadFxnT_swigregister = _oechem.OEMolBaseReadFxnT_swigregister
OEMolBaseReadFxnT_swigregister(OEMolBaseReadFxnT)
OENormModelDefault = cvar.OENormModelDefault
OENormModelSymmetry = cvar.OENormModelSymmetry
OENormModelPhysical = cvar.OENormModelPhysical
OENormModelHyperVal = cvar.OENormModelHyperVal
OENormModelDative = cvar.OENormModelDative

class OEMolBaseWriteFxnT(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEWriteFxn<(OEChem::OEMolBase)> class."""

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

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

    def __call__(self, arg2: 'oeostream', arg3: 'OEMolBase', arg4: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEMolBaseWriteFxnT self, oeostream arg2, OEMolBase arg3, OEBinaryIOHandlerBase arg4) -> bool"""
        return _oechem.OEMolBaseWriteFxnT___call__(self, arg2, arg3, arg4)

    __swig_destroy__ = _oechem.delete_OEMolBaseWriteFxnT
    __del__ = lambda self: None
OEMolBaseWriteFxnT_swigregister = _oechem.OEMolBaseWriteFxnT_swigregister
OEMolBaseWriteFxnT_swigregister(OEMolBaseWriteFxnT)

class OEMCMolBaseReadFxnT(OEReadFxnBase):
    """Proxy of C++ OESystem::OEReadFxn<(OEChem::OEMCMolBase)> class."""

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

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

    def __call__(self, arg2: 'oeistream', arg3: 'OEMCMolBase', arg4: 'OEULongLong', arg5: 'OEBinaryIOHandlerBase') -> "unsigned int":
        """__call__(OEMCMolBaseReadFxnT self, oeistream arg2, OEMCMolBase arg3, OEULongLong arg4, OEBinaryIOHandlerBase arg5) -> unsigned int"""
        return _oechem.OEMCMolBaseReadFxnT___call__(self, arg2, arg3, arg4, arg5)

    __swig_destroy__ = _oechem.delete_OEMCMolBaseReadFxnT
    __del__ = lambda self: None
OEMCMolBaseReadFxnT_swigregister = _oechem.OEMCMolBaseReadFxnT_swigregister
OEMCMolBaseReadFxnT_swigregister(OEMCMolBaseReadFxnT)

class OEMCMolBaseWriteFxnT(OEWriteFxnBase):
    """Proxy of C++ OESystem::OEWriteFxn<(OEChem::OEMCMolBase)> class."""

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

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

    def __call__(self, arg2: 'oeostream', arg3: 'OEMCMolBase', arg4: 'OEBinaryIOHandlerBase') -> "bool":
        """__call__(OEMCMolBaseWriteFxnT self, oeostream arg2, OEMCMolBase arg3, OEBinaryIOHandlerBase arg4) -> bool"""
        return _oechem.OEMCMolBaseWriteFxnT___call__(self, arg2, arg3, arg4)

    __swig_destroy__ = _oechem.delete_OEMCMolBaseWriteFxnT
    __del__ = lambda self: None
OEMCMolBaseWriteFxnT_swigregister = _oechem.OEMCMolBaseWriteFxnT_swigregister
OEMCMolBaseWriteFxnT_swigregister(OEMCMolBaseWriteFxnT)


def OESmartsLexReplace(*args) -> "bool":
    """
    OESmartsLexReplace(std::string const & pattern, PyObject * input) -> PyObject
    OESmartsLexReplace(std::string & arg1, std::vector< std::pair< std::string,std::string > > const & arg2) -> bool
    """
    return _oechem.OESmartsLexReplace(*args)

def OESetDimensionFromCoords(arg1: 'OEMolBase') -> "void":
    """OESetDimensionFromCoords(OEMolBase arg1)"""
    return _oechem.OESetDimensionFromCoords(arg1)

def OEGetDimensionFromCoords(arg1: 'OEMolBase') -> "unsigned int":
    """OEGetDimensionFromCoords(OEMolBase arg1) -> unsigned int"""
    return _oechem.OEGetDimensionFromCoords(arg1)

def OESetMDLDimensionFromCoords(arg1: 'OEMolBase') -> "void":
    """OESetMDLDimensionFromCoords(OEMolBase arg1)"""
    return _oechem.OESetMDLDimensionFromCoords(arg1)

def OEGetMDLDimensionFromCoords(arg1: 'OEMolBase') -> "unsigned int":
    """OEGetMDLDimensionFromCoords(OEMolBase arg1) -> unsigned int"""
    return _oechem.OEGetMDLDimensionFromCoords(arg1)

def OECopyMol(dst: 'OEMolBase', src: 'OEMolBase', atommap: 'OEChem::OEAtomBase **'=None, bondmap: 'OEChem::OEBondBase **'=None) -> "void":
    """
    OECopyMol(OEMolBase dst, OEMolBase src, OEChem::OEAtomBase ** atommap=None, OEChem::OEBondBase ** bondmap=None)
    OECopyMol(OEMolBase dst, OEMolBase src, OEChem::OEAtomBase ** atommap=None)
    OECopyMol(OEMolBase dst, OEMolBase src)
    """
    return _oechem.OECopyMol(dst, src, atommap, bondmap)
class OEParseSmilesOptions(object):
    """Proxy of C++ OEChem::OEParseSmilesOptions 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, canon: 'bool'=False, strict: 'bool'=False, quiet: 'bool'=False):
        """
        __init__(OEChem::OEParseSmilesOptions self, bool canon=False, bool strict=False, bool quiet=False) -> OEParseSmilesOptions
        __init__(OEChem::OEParseSmilesOptions self, bool canon=False, bool strict=False) -> OEParseSmilesOptions
        __init__(OEChem::OEParseSmilesOptions self, bool canon=False) -> OEParseSmilesOptions
        __init__(OEChem::OEParseSmilesOptions self) -> OEParseSmilesOptions
        """
        this = _oechem.new_OEParseSmilesOptions(canon, strict, quiet)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetCanon(self) -> "bool":
        """GetCanon(OEParseSmilesOptions self) -> bool"""
        return _oechem.OEParseSmilesOptions_GetCanon(self)


    def SetCanon(self, c: 'bool') -> "void":
        """SetCanon(OEParseSmilesOptions self, bool c)"""
        return _oechem.OEParseSmilesOptions_SetCanon(self, c)


    def GetStrict(self) -> "bool":
        """GetStrict(OEParseSmilesOptions self) -> bool"""
        return _oechem.OEParseSmilesOptions_GetStrict(self)


    def SetStrict(self, s: 'bool') -> "void":
        """SetStrict(OEParseSmilesOptions self, bool s)"""
        return _oechem.OEParseSmilesOptions_SetStrict(self, s)


    def GetQuiet(self) -> "bool":
        """GetQuiet(OEParseSmilesOptions self) -> bool"""
        return _oechem.OEParseSmilesOptions_GetQuiet(self)


    def SetQuiet(self, q: 'bool') -> "void":
        """SetQuiet(OEParseSmilesOptions self, bool q)"""
        return _oechem.OEParseSmilesOptions_SetQuiet(self, q)

    __swig_destroy__ = _oechem.delete_OEParseSmilesOptions
    __del__ = lambda self: None
OEParseSmilesOptions_swigregister = _oechem.OEParseSmilesOptions_swigregister
OEParseSmilesOptions_swigregister(OEParseSmilesOptions)


def OEParseSmiles(*args) -> "bool":
    """
    OEParseSmiles(OEMolBase mol, char const * str, bool canon=False, bool strict=False) -> bool
    OEParseSmiles(OEMolBase mol, char const * str, bool canon=False) -> bool
    OEParseSmiles(OEMolBase mol, char const * str) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str, bool canon=False, bool strict=False) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str, bool canon=False) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str) -> bool
    OEParseSmiles(OEMolBase mol, char const * str, OEParseSmilesOptions options) -> bool
    OEParseSmiles(OEMolBase mol, std::string const & str, OEParseSmilesOptions options) -> bool
    """
    return _oechem.OEParseSmiles(*args)

def OESmilesAtomCount(*args) -> "unsigned int":
    """
    OESmilesAtomCount(std::string const & str) -> unsigned int
    OESmilesAtomCount(char const * str) -> unsigned int
    """
    return _oechem.OESmilesAtomCount(*args)

def OEParseSmarts(*args) -> "bool":
    """
    OEParseSmarts(OEQMolBase arg1, char const * arg2, unsigned int opt) -> bool
    OEParseSmarts(OEQMolBase arg1, char const * arg2) -> bool
    OEParseSmarts(OEQMolBase arg1, char const * arg2, OEVectorBindings vb, unsigned int opt) -> bool
    OEParseSmarts(OEQMolBase arg1, char const * arg2, OEVectorBindings vb) -> bool
    """
    return _oechem.OEParseSmarts(*args)

def OEParseSmirks(*args) -> "bool":
    """
    OEParseSmirks(OEQMolBase arg1, char const * arg2, unsigned int opt) -> bool
    OEParseSmirks(OEQMolBase arg1, char const * arg2) -> bool
    OEParseSmirks(OEQMolBase arg1, char const * arg2, OEVectorBindings vb, unsigned int opt) -> bool
    OEParseSmirks(OEQMolBase arg1, char const * arg2, OEVectorBindings vb) -> bool
    """
    return _oechem.OEParseSmirks(*args)
class OEVectorBindings(object):
    """Proxy of C++ OEChem::OEVectorBindings 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__ = _oechem.delete_OEVectorBindings
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEChem::OEVectorBindings self) -> OEVectorBindings
        __init__(OEChem::OEVectorBindings self, OEVectorBindings arg2) -> OEVectorBindings
        """
        this = _oechem.new_OEVectorBindings(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Add(self, label: 'char const *', pattern: 'char const *') -> "bool":
        """Add(OEVectorBindings self, char const * label, char const * pattern) -> bool"""
        return _oechem.OEVectorBindings_Add(self, label, pattern)


    def Get(self, expr: 'OEChem::OEExprBase const *&', label: 'char const *&', smarts: 'char const *') -> "bool":
        """Get(OEVectorBindings self, OEChem::OEExprBase const *& expr, char const *& label, char const * smarts) -> bool"""
        return _oechem.OEVectorBindings_Get(self, expr, label, smarts)

OEVectorBindings_swigregister = _oechem.OEVectorBindings_swigregister
OEVectorBindings_swigregister(OEVectorBindings)


def OEDetermineReactants(mol: 'OEMolBase', parts: 'unsigned int *') -> "unsigned int":
    """OEDetermineReactants(OEMolBase mol, unsigned int * parts) -> unsigned int"""
    return _oechem.OEDetermineReactants(mol, parts)
class OEUniMolecularRxn(object):
    """Proxy of C++ OEChem::OEUniMolecularRxn 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__(OEChem::OEUniMolecularRxn self) -> OEUniMolecularRxn
        __init__(OEChem::OEUniMolecularRxn self, char const * arg2, bool strictSmirks=True) -> OEUniMolecularRxn
        __init__(OEChem::OEUniMolecularRxn self, char const * arg2) -> OEUniMolecularRxn
        __init__(OEChem::OEUniMolecularRxn self, OEUniMolecularRxn arg2) -> OEUniMolecularRxn
        """
        this = _oechem.new_OEUniMolecularRxn(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUniMolecularRxn
    __del__ = lambda self: None

    def Init(self, *args) -> "bool":
        """
        Init(OEUniMolecularRxn self, char const * c, bool strictSmirks=True) -> bool
        Init(OEUniMolecularRxn self, char const * c) -> bool
        Init(OEUniMolecularRxn self, OEQMolBase arg2, bool strictSmirks=True) -> bool
        Init(OEUniMolecularRxn self, OEQMolBase arg2) -> bool
        """
        return _oechem.OEUniMolecularRxn_Init(self, *args)


    def __call__(self, mol: 'OEMolBase') -> "bool":
        """__call__(OEUniMolecularRxn self, OEMolBase mol) -> bool"""
        return _oechem.OEUniMolecularRxn___call__(self, mol)


    def IsValid(self):
      return _oechem.OEUniMolecularRxn___nonzero__(self)



    def SetValidateKekule(self, arg2: 'bool') -> "bool":
        """SetValidateKekule(OEUniMolecularRxn self, bool arg2) -> bool"""
        return _oechem.OEUniMolecularRxn_SetValidateKekule(self, arg2)


    def GetValidateKekule(self) -> "bool":
        """GetValidateKekule(OEUniMolecularRxn self) -> bool"""
        return _oechem.OEUniMolecularRxn_GetValidateKekule(self)


    def SetClearCoordinates(self, arg2: 'bool') -> "bool":
        """SetClearCoordinates(OEUniMolecularRxn self, bool arg2) -> bool"""
        return _oechem.OEUniMolecularRxn_SetClearCoordinates(self, arg2)


    def GetClearCoordinates(self) -> "bool":
        """GetClearCoordinates(OEUniMolecularRxn self) -> bool"""
        return _oechem.OEUniMolecularRxn_GetClearCoordinates(self)

OEUniMolecularRxn_swigregister = _oechem.OEUniMolecularRxn_swigregister
OEUniMolecularRxn_swigregister(OEUniMolecularRxn)

class OELibraryGen(object):
    """Proxy of C++ OEChem::OELibraryGen 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__(OEChem::OELibraryGen self) -> OELibraryGen
        __init__(OEChem::OELibraryGen self, OELibraryGen rhs) -> OELibraryGen
        __init__(OEChem::OELibraryGen self, char const * arg2, bool strictSmirks=True) -> OELibraryGen
        __init__(OEChem::OELibraryGen self, char const * arg2) -> OELibraryGen
        """
        this = _oechem.new_OELibraryGen(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELibraryGen
    __del__ = lambda self: None

    def Init(self, *args) -> "bool":
        """
        Init(OELibraryGen self, char const * c, bool strictSmirks=True) -> bool
        Init(OELibraryGen self, char const * c) -> bool
        Init(OELibraryGen self, OEQMolBase arg2, bool strictSmirks=True) -> bool
        Init(OELibraryGen self, OEQMolBase arg2) -> bool
        """
        return _oechem.OELibraryGen_Init(self, *args)


    def IsValid(self):
      return _oechem.OELibraryGen___nonzero__(self)



    def __call__(self, arg2: 'OEMolBase') -> "bool":
        """__call__(OELibraryGen self, OEMolBase arg2) -> bool"""
        return _oechem.OELibraryGen___call__(self, arg2)


    def NumReactants(self) -> "unsigned int":
        """NumReactants(OELibraryGen self) -> unsigned int"""
        return _oechem.OELibraryGen_NumReactants(self)


    def SetStartingMaterial(self, *args) -> "unsigned int":
        """
        SetStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum, bool umatch=True) -> unsigned int
        SetStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum) -> unsigned int
        """
        return _oechem.OELibraryGen_SetStartingMaterial(self, *args)


    def AddStartingMaterial(self, *args) -> "unsigned int":
        """
        AddStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OEMolBaseIter arg2, unsigned int reacnum) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum, bool umatch=True) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OESystem::OEIterBase< OEChem::OEMolBase > * arg2, unsigned int reacnum) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum, bool umatch=True) -> unsigned int
        AddStartingMaterial(OELibraryGen self, OEMolBase mol, unsigned int reacnum) -> unsigned int
        """
        return _oechem.OELibraryGen_AddStartingMaterial(self, *args)


    def ClearStartingMaterial(self, reacnum: 'unsigned int') -> "void":
        """ClearStartingMaterial(OELibraryGen self, unsigned int reacnum)"""
        return _oechem.OELibraryGen_ClearStartingMaterial(self, reacnum)


    def GetStartingMaterial(self,rnum):
      startiter = self.GetStartingMaterialIter(rnum)
      while startiter.IsValid():
        yield startiter.Target()
        startiter.Next()



    def GetProducts(self):
      proditer = self.GetProductsIter()
      while proditer.IsValid():
        yield proditer.Target()
        proditer.Next()



    def SetValenceCorrection(self, arg2: 'bool') -> "bool":
        """SetValenceCorrection(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetValenceCorrection(self, arg2)


    def GetValenceCorrection(self) -> "bool":
        """GetValenceCorrection(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetValenceCorrection(self)


    def SetExplicitHydrogens(self, arg2: 'bool') -> "bool":
        """SetExplicitHydrogens(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetExplicitHydrogens(self, arg2)


    def GetExplicitHydrogens(self) -> "bool":
        """GetExplicitHydrogens(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetExplicitHydrogens(self)


    def SetRemoveUnmappedFragments(self, arg2: 'bool') -> "bool":
        """SetRemoveUnmappedFragments(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetRemoveUnmappedFragments(self, arg2)


    def GetRemoveUnmappedFragments(self) -> "bool":
        """GetRemoveUnmappedFragments(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetRemoveUnmappedFragments(self)


    def SetAssignMapIdx(self, arg2: 'bool') -> "bool":
        """SetAssignMapIdx(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetAssignMapIdx(self, arg2)


    def GetAssignMapIdx(self) -> "bool":
        """GetAssignMapIdx(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetAssignMapIdx(self)


    def SetValidateKekule(self, arg2: 'bool') -> "bool":
        """SetValidateKekule(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetValidateKekule(self, arg2)


    def GetValidateKekule(self) -> "bool":
        """GetValidateKekule(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetValidateKekule(self)


    def SetClearCoordinates(self, arg2: 'bool') -> "bool":
        """SetClearCoordinates(OELibraryGen self, bool arg2) -> bool"""
        return _oechem.OELibraryGen_SetClearCoordinates(self, arg2)


    def GetClearCoordinates(self) -> "bool":
        """GetClearCoordinates(OELibraryGen self) -> bool"""
        return _oechem.OELibraryGen_GetClearCoordinates(self)


    def SetTitleSeparator(self, c: 'char const *') -> "bool":
        """SetTitleSeparator(OELibraryGen self, char const * c) -> bool"""
        return _oechem.OELibraryGen_SetTitleSeparator(self, c)


    def GetTitleSeparator(self) -> "std::string const &":
        """GetTitleSeparator(OELibraryGen self) -> std::string const &"""
        return _oechem.OELibraryGen_GetTitleSeparator(self)


    def GetStartingMaterialIter(self, rnum: 'unsigned int') -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetStartingMaterialIter(OELibraryGen self, unsigned int rnum) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.OELibraryGen_GetStartingMaterialIter(self, rnum)


    def GetProductsIter(self) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
        """GetProductsIter(OELibraryGen self) -> OESystem::OEIterBase< OEChem::OEMolBase > *"""
        return _oechem.OELibraryGen_GetProductsIter(self)

OELibraryGen_swigregister = _oechem.OELibraryGen_swigregister
OELibraryGen_swigregister(OELibraryGen)


def OEGetUniMolecularRxnIter(mol: 'OEMolBase', rxn: 'OEQMolBase', strictSmirks: 'bool'=True, maxMatches: 'unsigned int'=10000, validateKekule: 'bool'=True) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn, bool strictSmirks=True, unsigned int maxMatches=10000, bool validateKekule=True) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn, bool strictSmirks=True, unsigned int maxMatches=10000) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn, bool strictSmirks=True) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetUniMolecularRxnIter(OEMolBase mol, OEQMolBase rxn) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEGetUniMolecularRxnIter(mol, rxn, strictSmirks, maxMatches, validateKekule)

def OEHasResidue(atm: 'OEAtomBase') -> "bool":
    """OEHasResidue(OEAtomBase atm) -> bool"""
    return _oechem.OEHasResidue(atm)

def OEAtomSetResidue(atm: 'OEAtomBase', res: 'OEResidue') -> "bool":
    """OEAtomSetResidue(OEAtomBase atm, OEResidue res) -> bool"""
    return _oechem.OEAtomSetResidue(atm, res)

def OEAtomGetResidue(atm: 'OEAtomBase') -> "OEChem::OEResidue const &":
    """OEAtomGetResidue(OEAtomBase atm) -> OEResidue"""
    return _oechem.OEAtomGetResidue(atm)

def OEHasResidues(mol: 'OEMolBase') -> "bool":
    """OEHasResidues(OEMolBase mol) -> bool"""
    return _oechem.OEHasResidues(mol)

def OEClearResidues(mol: 'OEMolBase') -> "void":
    """OEClearResidues(OEMolBase mol)"""
    return _oechem.OEClearResidues(mol)

def OEClearResidue(atom: 'OEAtomBase') -> "void":
    """OEClearResidue(OEAtomBase atom)"""
    return _oechem.OEClearResidue(atom)

def OESameResidue(res1: 'OEResidue', res2: 'OEResidue') -> "bool":
    """OESameResidue(OEResidue res1, OEResidue res2) -> bool"""
    return _oechem.OESameResidue(res1, res2)

def OESameChain(res1: 'OEResidue', res2: 'OEResidue') -> "bool":
    """OESameChain(OEResidue res1, OEResidue res2) -> bool"""
    return _oechem.OESameChain(res1, res2)

def OEResidueHydrogens(*args) -> "void":
    """
    OEResidueHydrogens(OEAtomBase atm, unsigned int style)
    OEResidueHydrogens(OEAtomBase atm)
    OEResidueHydrogens(OEMolBase mol, unsigned int style)
    OEResidueHydrogens(OEMolBase mol)
    """
    return _oechem.OEResidueHydrogens(*args)

def OEPDBOrderAtoms(mol: 'OEMolBase') -> "bool":
    """OEPDBOrderAtoms(OEMolBase mol) -> bool"""
    return _oechem.OEPDBOrderAtoms(mol)

def OEAssignResidueNumbers(mol: 'OEMolBase') -> "void":
    """OEAssignResidueNumbers(OEMolBase mol)"""
    return _oechem.OEAssignResidueNumbers(mol)

def OEAssignSerialNumbers(mol: 'OEMolBase') -> "void":
    """OEAssignSerialNumbers(OEMolBase mol)"""
    return _oechem.OEAssignSerialNumbers(mol)

def OEPerceiveResidues(*args) -> "void":
    """
    OEPerceiveResidues(OEMolBase mol, unsigned int stable)
    OEPerceiveResidues(OEMolBase mol)
    """
    return _oechem.OEPerceiveResidues(*args)

def OEGetAminoAcidCode(idx: 'unsigned int') -> "char":
    """OEGetAminoAcidCode(unsigned int idx) -> char"""
    return _oechem.OEGetAminoAcidCode(idx)

def OEGetResidueIndex(*args) -> "unsigned int":
    """
    OEGetResidueIndex(char const * name) -> unsigned int
    OEGetResidueIndex(OEResidue res) -> unsigned int
    OEGetResidueIndex(OEAtomBase atm) -> unsigned int
    """
    return _oechem.OEGetResidueIndex(*args)

def OEGetResidueName(idx: 'unsigned int') -> "char const *":
    """OEGetResidueName(unsigned int idx) -> char const *"""
    return _oechem.OEGetResidueName(idx)

def OEGetPDBAtomIndex(*args) -> "unsigned int":
    """
    OEGetPDBAtomIndex(char const * name) -> unsigned int
    OEGetPDBAtomIndex(OEAtomBase atm) -> unsigned int
    """
    return _oechem.OEGetPDBAtomIndex(*args)

def OEGetPDBAtomName(idx: 'unsigned int') -> "char const *":
    """OEGetPDBAtomName(unsigned int idx) -> char const *"""
    return _oechem.OEGetPDBAtomName(idx)

def OEFindRingAtomsAndBonds(mol: 'OEMolBase') -> "void":
    """OEFindRingAtomsAndBonds(OEMolBase mol)"""
    return _oechem.OEFindRingAtomsAndBonds(mol)

def OEAtomIsInRingSize(atm: 'OEAtomBase', size: 'unsigned int') -> "bool":
    """OEAtomIsInRingSize(OEAtomBase atm, unsigned int size) -> bool"""
    return _oechem.OEAtomIsInRingSize(atm, size)

def OEBondIsInRingSize(bnd: 'OEBondBase', size: 'unsigned int') -> "bool":
    """OEBondIsInRingSize(OEBondBase bnd, unsigned int size) -> bool"""
    return _oechem.OEBondIsInRingSize(bnd, size)

def OEAtomIsInAromaticRingSize(atm: 'OEAtomBase', size: 'unsigned int') -> "bool":
    """OEAtomIsInAromaticRingSize(OEAtomBase atm, unsigned int size) -> bool"""
    return _oechem.OEAtomIsInAromaticRingSize(atm, size)

def OEBondIsInAromaticRingSize(bnd: 'OEBondBase', size: 'unsigned int') -> "bool":
    """OEBondIsInAromaticRingSize(OEBondBase bnd, unsigned int size) -> bool"""
    return _oechem.OEBondIsInAromaticRingSize(bnd, size)

def OEAtomGetSmallestRingSize(atm: 'OEAtomBase') -> "unsigned int":
    """OEAtomGetSmallestRingSize(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEAtomGetSmallestRingSize(atm)

def OEBondGetSmallestRingSize(bnd: 'OEBondBase') -> "unsigned int":
    """OEBondGetSmallestRingSize(OEBondBase bnd) -> unsigned int"""
    return _oechem.OEBondGetSmallestRingSize(bnd)
class OESDDataPair(object):
    """Proxy of C++ OEChem::OESDDataPair 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__(OEChem::OESDDataPair self) -> OESDDataPair
        __init__(OEChem::OESDDataPair self, std::string t, std::string v) -> OESDDataPair
        """
        this = _oechem.new_OESDDataPair(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def SetTag(self, t: 'char const *') -> "void":
        """SetTag(OESDDataPair self, char const * t)"""
        return _oechem.OESDDataPair_SetTag(self, t)


    def SetValue(self, v: 'char const *') -> "void":
        """SetValue(OESDDataPair self, char const * v)"""
        return _oechem.OESDDataPair_SetValue(self, v)


    def GetTag(self) -> "char const *":
        """GetTag(OESDDataPair self) -> char const *"""
        return _oechem.OESDDataPair_GetTag(self)


    def GetValue(self) -> "char const *":
        """GetValue(OESDDataPair self) -> char const *"""
        return _oechem.OESDDataPair_GetValue(self)

    __swig_destroy__ = _oechem.delete_OESDDataPair
    __del__ = lambda self: None
OESDDataPair_swigregister = _oechem.OESDDataPair_swigregister
OESDDataPair_swigregister(OESDDataPair)


def OEHasSDData(*args) -> "bool":
    """
    OEHasSDData(OEMolBase mol) -> bool
    OEHasSDData(OEMolBase mol, std::string const & tag) -> bool
    """
    return _oechem.OEHasSDData(*args)

def OEDeleteSDData(mol: 'OEMolBase', tag: 'std::string const &') -> "bool":
    """OEDeleteSDData(OEMolBase mol, std::string const & tag) -> bool"""
    return _oechem.OEDeleteSDData(mol, tag)

def OEGetSDData(mol: 'OEMolBase', tag: 'std::string const &') -> "std::string":
    """OEGetSDData(OEMolBase mol, std::string const & tag) -> std::string"""
    return _oechem.OEGetSDData(mol, tag)

def OESetSDData(*args) -> "bool":
    """
    OESetSDData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OESetSDData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OESetSDData(*args)

def OEAddSDData(*args) -> "bool":
    """
    OEAddSDData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OEAddSDData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OEAddSDData(*args)

def OECopySDData(*args) -> "bool":
    """
    OECopySDData(OEMolBase dst, OEMolBase src) -> bool
    OECopySDData(OEMolBase dst, OEContainer src) -> bool
    """
    return _oechem.OECopySDData(*args)

def OEGetSDDataPairs(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OESDDataPair > *":
    """OEGetSDDataPairs(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OESDDataPair > *"""
    return _oechem.OEGetSDDataPairs(mol)

def OEGetSDBaseData(mol: 'OEBase') -> "OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *":
    """OEGetSDBaseData(OEBase mol) -> OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *"""
    return _oechem.OEGetSDBaseData(mol)

def OEClearSDData(mol: 'OEMolBase') -> "bool":
    """OEClearSDData(OEMolBase mol) -> bool"""
    return _oechem.OEClearSDData(mol)
class OEAnisoUij(object):
    """Proxy of C++ OEChem::OEAnisoUij 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__(OEChem::OEAnisoUij self) -> OEAnisoUij
        __init__(OEChem::OEAnisoUij self, int u11, int u22, int u33, int u12, int u13, int u23) -> OEAnisoUij
        """
        this = _oechem.new_OEAnisoUij(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetU11(self) -> "int":
        """GetU11(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU11(self)


    def SetU11(self, val: 'int') -> "void":
        """SetU11(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU11(self, val)


    def GetU22(self) -> "int":
        """GetU22(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU22(self)


    def SetU22(self, val: 'int') -> "void":
        """SetU22(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU22(self, val)


    def GetU33(self) -> "int":
        """GetU33(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU33(self)


    def SetU33(self, val: 'int') -> "void":
        """SetU33(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU33(self, val)


    def GetU12(self) -> "int":
        """GetU12(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU12(self)


    def SetU12(self, val: 'int') -> "void":
        """SetU12(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU12(self, val)


    def GetU13(self) -> "int":
        """GetU13(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU13(self)


    def SetU13(self, val: 'int') -> "void":
        """SetU13(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU13(self, val)


    def GetU23(self) -> "int":
        """GetU23(OEAnisoUij self) -> int"""
        return _oechem.OEAnisoUij_GetU23(self)


    def SetU23(self, val: 'int') -> "void":
        """SetU23(OEAnisoUij self, int val)"""
        return _oechem.OEAnisoUij_SetU23(self, val)

    __swig_destroy__ = _oechem.delete_OEAnisoUij
    __del__ = lambda self: None
OEAnisoUij_swigregister = _oechem.OEAnisoUij_swigregister
OEAnisoUij_swigregister(OEAnisoUij)


def OEHasPDBData(*args) -> "bool":
    """
    OEHasPDBData(OEMolBase mol) -> bool
    OEHasPDBData(OEMolBase mol, std::string const & tag) -> bool
    """
    return _oechem.OEHasPDBData(*args)

def OEDeletePDBData(mol: 'OEMolBase', tag: 'std::string const &') -> "bool":
    """OEDeletePDBData(OEMolBase mol, std::string const & tag) -> bool"""
    return _oechem.OEDeletePDBData(mol, tag)

def OEGetPDBData(mol: 'OEMolBase', tag: 'std::string const &') -> "std::string":
    """OEGetPDBData(OEMolBase mol, std::string const & tag) -> std::string"""
    return _oechem.OEGetPDBData(mol, tag)

def OESetPDBData(*args) -> "bool":
    """
    OESetPDBData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OESetPDBData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OESetPDBData(*args)

def OEAddPDBData(*args) -> "bool":
    """
    OEAddPDBData(OEMolBase mol, std::string const & tag, std::string const & value) -> bool
    OEAddPDBData(OEMolBase mol, OESDDataPair dp) -> bool
    """
    return _oechem.OEAddPDBData(*args)

def OECopyPDBData(dst: 'OEMolBase', src: 'OEMolBase') -> "bool":
    """OECopyPDBData(OEMolBase dst, OEMolBase src) -> bool"""
    return _oechem.OECopyPDBData(dst, src)

def OEGetPDBDataPairs(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEPDBDataPair > *":
    """OEGetPDBDataPairs(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEPDBDataPair > *"""
    return _oechem.OEGetPDBDataPairs(mol)

def OEGetPDBBaseData(mol: 'OEBase') -> "OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *":
    """OEGetPDBBaseData(OEBase mol) -> OESystem::OEIterBase< OESystem::OEBaseDataT< std::string > > *"""
    return _oechem.OEGetPDBBaseData(mol)

def OEClearPDBData(mol: 'OEMolBase') -> "bool":
    """OEClearPDBData(OEMolBase mol) -> bool"""
    return _oechem.OEClearPDBData(mol)
class OEHasAnisou(OEUnaryAtomPred):
    """Proxy of C++ OEChem::OEHasAnisou class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAnisou self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAnisou___call__(self, atom)


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



    def __init__(self):
        """__init__(OEChem::OEHasAnisou self) -> OEHasAnisou"""
        this = _oechem.new_OEHasAnisou()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHasAnisou
    __del__ = lambda self: None
OEHasAnisou_swigregister = _oechem.OEHasAnisou_swigregister
OEHasAnisou_swigregister(OEHasAnisou)


def OESetAnisou(*args) -> "void":
    """
    OESetAnisou(OEAtomBase atom, int u11, int u22, int u33, int u12, int u13, int u23)
    OESetAnisou(OEAtomBase atom, OEAnisoUij uij)
    """
    return _oechem.OESetAnisou(*args)

def OEGetAnisou(*args) -> "bool":
    """
    OEGetAnisou(OEAtomBase atom, int & u11, int & u22, int & u33, int & u12, int & u13, int & u23) -> bool
    OEGetAnisou(OEAnisoUij uij, OEAtomBase atom) -> bool
    """
    return _oechem.OEGetAnisou(*args)

def OE3DToAtomStereo(mol: 'OEMolBase') -> "bool":
    """OE3DToAtomStereo(OEMolBase mol) -> bool"""
    return _oechem.OE3DToAtomStereo(mol)

def OE3DToBondStereo(mol: 'OEMolBase', bmask: 'unsigned char *'=None) -> "bool":
    """
    OE3DToBondStereo(OEMolBase mol, unsigned char * bmask=None) -> bool
    OE3DToBondStereo(OEMolBase mol) -> bool
    """
    return _oechem.OE3DToBondStereo(mol, bmask)

def OE3DToInternalStereo(mol: 'OEMolBase') -> "bool":
    """OE3DToInternalStereo(OEMolBase mol) -> bool"""
    return _oechem.OE3DToInternalStereo(mol)

def OEPerceiveSymmetry(arg1: 'OEMolBase', includeH: 'bool'=True, automorph: 'bool'=False) -> "bool":
    """
    OEPerceiveSymmetry(OEMolBase arg1, bool includeH=True, bool automorph=False) -> bool
    OEPerceiveSymmetry(OEMolBase arg1, bool includeH=True) -> bool
    OEPerceiveSymmetry(OEMolBase arg1) -> bool
    """
    return _oechem.OEPerceiveSymmetry(arg1, includeH, automorph)

def OEPerceiveChiral(arg1: 'OEMolBase') -> "bool":
    """OEPerceiveChiral(OEMolBase arg1) -> bool"""
    return _oechem.OEPerceiveChiral(arg1)
class OEAtomBondSet(OERoleSet):
    """Proxy of C++ OEChem::OEAtomBondSet 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__(OEChem::OEAtomBondSet self) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomBondSet rhs, OEChem::OEAtomBase ** amap, OEChem::OEBondBase ** bmap) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomBondSet rhs, OEChem::OEAtomBase ** amap) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomBondSet rhs) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OESystem::OEIterBase< OEChem::OEAtomBase > * atoms) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OESystem::OEIterBase< OEChem::OEBondBase > * bonds) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OESystem::OEIterBase< OEChem::OEAtomBase > * atoms, OESystem::OEIterBase< OEChem::OEBondBase > * bonds) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomIter atoms) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEBondIter bonds) -> OEAtomBondSet
        __init__(OEChem::OEAtomBondSet self, OEAtomIter atoms, OEBondIter bonds) -> OEAtomBondSet
        """
        this = _oechem.new_OEAtomBondSet(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomBondSet
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEChem::OEAtomBondSet *":
        """CreateCopy(OEAtomBondSet self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSet_CreateCopy(self)


    def Clear(self) -> "void":
        """Clear(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_Clear(self)


    def ClearAtomsAndBonds(self) -> "void":
        """ClearAtomsAndBonds(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_ClearAtomsAndBonds(self)


    def ClearAtoms(self) -> "void":
        """ClearAtoms(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_ClearAtoms(self)


    def ClearBonds(self) -> "void":
        """ClearBonds(OEAtomBondSet self)"""
        return _oechem.OEAtomBondSet_ClearBonds(self)


    def IsEmpty(self) -> "bool":
        """IsEmpty(OEAtomBondSet self) -> bool"""
        return _oechem.OEAtomBondSet_IsEmpty(self)


    def NumAtoms(self, *args) -> "unsigned int":
        """
        NumAtoms(OEAtomBondSet self) -> unsigned int
        NumAtoms(OEAtomBondSet self, OEUnaryAtomPred atompred) -> unsigned int
        """
        return _oechem.OEAtomBondSet_NumAtoms(self, *args)


    def NumBonds(self, *args) -> "unsigned int":
        """
        NumBonds(OEAtomBondSet self) -> unsigned int
        NumBonds(OEAtomBondSet self, OEUnaryBondPred bondpred) -> unsigned int
        """
        return _oechem.OEAtomBondSet_NumBonds(self, *args)


    def HasAtom(self, atom: 'OEAtomBase') -> "bool":
        """HasAtom(OEAtomBondSet self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomBondSet_HasAtom(self, atom)


    def HasBond(self, bond: 'OEBondBase') -> "bool":
        """HasBond(OEAtomBondSet self, OEBondBase bond) -> bool"""
        return _oechem.OEAtomBondSet_HasBond(self, bond)


    def AddAtom(self, atom: 'OEAtomBase') -> "bool":
        """AddAtom(OEAtomBondSet self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomBondSet_AddAtom(self, atom)


    def AddBond(self, bond: 'OEBondBase') -> "bool":
        """AddBond(OEAtomBondSet self, OEBondBase bond) -> bool"""
        return _oechem.OEAtomBondSet_AddBond(self, bond)


    def AddAtoms(self, atoms: 'OEAtomVector') -> "bool":
        """AddAtoms(OEAtomBondSet self, OEAtomVector atoms) -> bool"""
        return _oechem.OEAtomBondSet_AddAtoms(self, atoms)


    def AddBonds(self, bonds: 'OEBondVector') -> "bool":
        """AddBonds(OEAtomBondSet self, OEBondVector bonds) -> bool"""
        return _oechem.OEAtomBondSet_AddBonds(self, bonds)


    def Add(self, *args) -> "bool":
        """
        Add(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred, OEUnaryBondPred bondpred) -> bool
        Add(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred) -> bool
        Add(OEAtomBondSet self, OEMolBase mol, OEUnaryBondPred bondpred) -> bool
        Add(OEAtomBondSet self, OEAtomBondSet abset) -> bool
        """
        return _oechem.OEAtomBondSet_Add(self, *args)


    def RemoveAtom(self, atom: 'OEAtomBase') -> "bool":
        """RemoveAtom(OEAtomBondSet self, OEAtomBase atom) -> bool"""
        return _oechem.OEAtomBondSet_RemoveAtom(self, atom)


    def RemoveBond(self, bond: 'OEBondBase') -> "bool":
        """RemoveBond(OEAtomBondSet self, OEBondBase bond) -> bool"""
        return _oechem.OEAtomBondSet_RemoveBond(self, bond)


    def RemoveAtoms(self, atoms: 'OEAtomVector') -> "bool":
        """RemoveAtoms(OEAtomBondSet self, OEAtomVector atoms) -> bool"""
        return _oechem.OEAtomBondSet_RemoveAtoms(self, atoms)


    def RemoveBonds(self, bonds: 'OEBondVector') -> "bool":
        """RemoveBonds(OEAtomBondSet self, OEBondVector bonds) -> bool"""
        return _oechem.OEAtomBondSet_RemoveBonds(self, bonds)


    def Remove(self, *args) -> "bool":
        """
        Remove(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred, OEUnaryBondPred bondpred) -> bool
        Remove(OEAtomBondSet self, OEMolBase mol, OEUnaryAtomPred atompred) -> bool
        Remove(OEAtomBondSet self, OEMolBase mol, OEUnaryBondPred bondpred) -> bool
        Remove(OEAtomBondSet self, OEAtomBondSet abset) -> bool
        """
        return _oechem.OEAtomBondSet_Remove(self, *args)


    def Sweep(self) -> "bool":
        """Sweep(OEAtomBondSet self) -> bool"""
        return _oechem.OEAtomBondSet_Sweep(self)


    def Translate(self, amap: 'OEChem::OEAtomBase **', bmap: 'OEChem::OEBondBase **') -> "bool":
        """Translate(OEAtomBondSet self, OEChem::OEAtomBase ** amap, OEChem::OEBondBase ** bmap) -> bool"""
        return _oechem.OEAtomBondSet_Translate(self, amap, bmap)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAtoms(OEAtomBondSet self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEAtomBondSet self, OEUnaryAtomPred atompred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAtomBondSet_GetAtoms(self, *args)


    def GetBonds(self, *args) -> "OESystem::OEIterBase< OEChem::OEBondBase > *":
        """
        GetBonds(OEAtomBondSet self) -> OESystem::OEIterBase< OEChem::OEBondBase >
        GetBonds(OEAtomBondSet self, OEUnaryBondPred bondpred) -> OESystem::OEIterBase< OEChem::OEBondBase > *
        """
        return _oechem.OEAtomBondSet_GetBonds(self, *args)


    def __str__(self) -> "std::string":
        """__str__(OEAtomBondSet self) -> std::string"""
        return _oechem.OEAtomBondSet___str__(self)

OEAtomBondSet_swigregister = _oechem.OEAtomBondSet_swigregister
OEAtomBondSet_swigregister(OEAtomBondSet)


def OESubsetMol(*args) -> "bool":
    """
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEMatchBase match) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEUnaryAtomPred atomfcn, OEUnaryBondPred bondfcn) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMatchBase match) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEMCMolBase dst, OEMCMolBase src, OEAtomBondSet submol) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEQMolBase dst, OEQMolBase src, OEAtomBondSet submol) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEMolBase src, OEAtomBondSet submol) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False, OEChem::OEAtomBase ** atomMap=None) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False, bool RGroup=False) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol, bool adjustHCount=False) -> bool
    OESubsetMol(OEMolBase dst, OEAtomBondSet submol) -> bool
    """
    return _oechem.OESubsetMol(*args)
class OEAtomBondSetIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OEAtomBondSet)> 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::OEAtomBondSet)> self) -> OEAtomBondSetIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBondSet)> self, OEAtomBondSetIter rhs) -> OEAtomBondSetIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBondSet)> self, OESystem::OEIterBase< OEChem::OEAtomBondSet > * rhs) -> OEAtomBondSetIter
        __init__(OESystem::OEIter<(OEChem::OEAtomBondSet)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEAtomBondSet >::NonConstA > * rhs) -> OEAtomBondSetIter
        """
        this = _oechem.new_OEAtomBondSetIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAtomBondSetIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
        """Copy(OEAtomBondSetIter self) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *"""
        return _oechem.OEAtomBondSetIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAtomBondSetIter self, OESystem::OEIterBase< OEChem::OEAtomBondSet > * ib)
        Push(OEAtomBondSetIter self, OEAtomBondSetIter iter)
        """
        return _oechem.OEAtomBondSetIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEAtomBondSet,OEChem::OEAtomBondSet > const &') -> "void":
        """Sort(OEAtomBondSetIter self, OESystem::OEBinaryPredicate< OEChem::OEAtomBondSet,OEChem::OEAtomBondSet > const & sort_criterion)"""
        return _oechem.OEAtomBondSetIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """ToFirst(OEAtomBondSetIter self) -> OEAtomBondSetIter"""
        return _oechem.OEAtomBondSetIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """ToLast(OEAtomBondSetIter self) -> OEAtomBondSetIter"""
        return _oechem.OEAtomBondSetIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEAtomBondSet &":
        """__ref__(OEAtomBondSetIter self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAtomBondSetIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAtomBondSetIter self) -> PyObject *"""
        return _oechem.OEAtomBondSetIter_next(self)


    def Target(self) -> "OEChem::OEAtomBondSet &":
        """Target(OEAtomBondSetIter self) -> OEAtomBondSet"""
        return _oechem.OEAtomBondSetIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """
        Next(OEAtomBondSetIter self) -> OEAtomBondSetIter
        Next(OEAtomBondSetIter self, int i) -> OEAtomBondSetIter
        """
        return _oechem.OEAtomBondSetIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBondSet > &":
        """
        Prev(OEAtomBondSetIter self) -> OEAtomBondSetIter
        Prev(OEAtomBondSetIter self, int i) -> OEAtomBondSetIter
        """
        return _oechem.OEAtomBondSetIter_Prev(self, *args)

OEAtomBondSetIter_swigregister = _oechem.OEAtomBondSetIter_swigregister
OEAtomBondSetIter_swigregister(OEAtomBondSetIter)

class OESubSearch(object):
    """Proxy of C++ OEChem::OESubSearch 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__(OEChem::OESubSearch self) -> OESubSearch
        __init__(OEChem::OESubSearch self, char const * smarts, bool allowReorderAtoms=False) -> OESubSearch
        __init__(OEChem::OESubSearch self, char const * smarts) -> OESubSearch
        __init__(OEChem::OESubSearch self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> OESubSearch
        __init__(OEChem::OESubSearch self, OEQMolBase arg2) -> OESubSearch
        __init__(OEChem::OESubSearch self, OESubSearch arg2) -> OESubSearch
        """
        this = _oechem.new_OESubSearch(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearch
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OESubSearch___nonzero__(self)



    def Init(self, *args) -> "bool":
        """
        Init(OESubSearch self, char const * smarts, bool allowReorderAtoms=False) -> bool
        Init(OESubSearch self, char const * smarts) -> bool
        Init(OESubSearch self, OEQMolBase arg2) -> bool
        Init(OESubSearch self, OEMolBase mol, unsigned int aexpr, unsigned int bexpr) -> bool
        """
        return _oechem.OESubSearch_Init(self, *args)


    def AtomMatch(self, arg2: 'OEAtomBase') -> "bool":
        """AtomMatch(OESubSearch self, OEAtomBase arg2) -> bool"""
        return _oechem.OESubSearch_AtomMatch(self, arg2)


    def SingleMatch(self, *args) -> "bool":
        """
        SingleMatch(OESubSearch self, OEMolBase arg2) -> bool
        SingleMatch(OESubSearch self, OEQMolBase arg2) -> bool
        """
        return _oechem.OESubSearch_SingleMatch(self, *args)


    def Match(self, *args) -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
        """
        Match(OESubSearch self, OEMolBase arg2, bool uniquematch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OESubSearch self, OEMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OESubSearch self, OEQMolBase arg2, bool uniquematch=False) -> OESystem::OEIterBase< OEChem::OEMatchBase >
        Match(OESubSearch self, OEQMolBase arg2) -> OESystem::OEIterBase< OEChem::OEMatchBase > *
        """
        return _oechem.OESubSearch_Match(self, *args)


    def GetPattern(self) -> "OEChem::OEQMolBase const &":
        """GetPattern(OESubSearch self) -> OEQMolBase"""
        return _oechem.OESubSearch_GetPattern(self)


    def GetMaxMatches(self) -> "unsigned int":
        """GetMaxMatches(OESubSearch self) -> unsigned int"""
        return _oechem.OESubSearch_GetMaxMatches(self)


    def SetMaxMatches(self, m: 'unsigned int') -> "bool":
        """SetMaxMatches(OESubSearch self, unsigned int m) -> bool"""
        return _oechem.OESubSearch_SetMaxMatches(self, m)


    def AddConstraint(self, *args) -> "bool":
        """
        AddConstraint(OESubSearch self, OEMatchPairAtom arg2) -> bool
        AddConstraint(OESubSearch self, OEMatchPairBond arg2) -> bool
        """
        return _oechem.OESubSearch_AddConstraint(self, *args)


    def ClearConstraints(self) -> "void":
        """ClearConstraints(OESubSearch self)"""
        return _oechem.OESubSearch_ClearConstraints(self)


    def GetImpl(self, *args) -> "OEChem::OESearchImpl const *":
        """
        GetImpl(OESubSearch self) -> OEChem::OESearchImpl
        GetImpl(OESubSearch self) -> OEChem::OESearchImpl const *
        """
        return _oechem.OESubSearch_GetImpl(self, *args)

OESubSearch_swigregister = _oechem.OESubSearch_swigregister
OESubSearch_swigregister(OESubSearch)


def OEPrepareSearch(mol: 'OEMolBase', subs: 'OESubSearch', adjustH: 'bool'=False) -> "void":
    """
    OEPrepareSearch(OEMolBase mol, OESubSearch subs, bool adjustH=False)
    OEPrepareSearch(OEMolBase mol, OESubSearch subs)
    """
    return _oechem.OEPrepareSearch(mol, subs, adjustH)

def OECount(*args) -> "unsigned int":
    """
    OECount(OEMolBase arg1, OEUnaryAtomPred arg2) -> unsigned int
    OECount(OEMolBase arg1, OEUnaryBondPred arg2) -> unsigned int
    OECount(OEMolBase arg1, OEUnaryGroupPred arg2) -> unsigned int
    OECount(OEAtomBondSet abset, OEUnaryAtomPred atompred) -> unsigned int
    OECount(OEAtomBondSet abset, OEUnaryBondPred bondpred) -> unsigned int
    OECount(OEMolBase arg1, OESubSearch arg2, bool uniquematch=False) -> unsigned int
    OECount(OEMolBase arg1, OESubSearch arg2) -> unsigned int
    """
    return _oechem.OECount(*args)
class OESubSearchIter(object):
    """Proxy of C++ OESystem::OEIter<(OEChem::OESubSearch)> 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::OESubSearch)> self) -> OESubSearchIter
        __init__(OESystem::OEIter<(OEChem::OESubSearch)> self, OESubSearchIter rhs) -> OESubSearchIter
        __init__(OESystem::OEIter<(OEChem::OESubSearch)> self, OESystem::OEIterBase< OEChem::OESubSearch > * rhs) -> OESubSearchIter
        __init__(OESystem::OEIter<(OEChem::OESubSearch)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OESubSearch >::NonConstA > * rhs) -> OESubSearchIter
        """
        this = _oechem.new_OESubSearchIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESubSearchIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OESubSearch > *":
        """Copy(OESubSearchIter self) -> OESystem::OEIterBase< OEChem::OESubSearch > *"""
        return _oechem.OESubSearchIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESubSearchIter self, OESystem::OEIterBase< OEChem::OESubSearch > * ib)
        Push(OESubSearchIter self, OESubSearchIter iter)
        """
        return _oechem.OESubSearchIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OESubSearch,OEChem::OESubSearch > const &') -> "void":
        """Sort(OESubSearchIter self, OESystem::OEBinaryPredicate< OEChem::OESubSearch,OEChem::OESubSearch > const & sort_criterion)"""
        return _oechem.OESubSearchIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """ToFirst(OESubSearchIter self) -> OESubSearchIter"""
        return _oechem.OESubSearchIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """ToLast(OESubSearchIter self) -> OESubSearchIter"""
        return _oechem.OESubSearchIter_ToLast(self)


    def __ref__(self) -> "OEChem::OESubSearch &":
        """__ref__(OESubSearchIter self) -> OESubSearch"""
        return _oechem.OESubSearchIter___ref__(self)


    def IsValid(self):
      return _oechem.OESubSearchIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESubSearchIter self) -> PyObject *"""
        return _oechem.OESubSearchIter_next(self)


    def Target(self) -> "OEChem::OESubSearch &":
        """Target(OESubSearchIter self) -> OESubSearch"""
        return _oechem.OESubSearchIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """
        Next(OESubSearchIter self) -> OESubSearchIter
        Next(OESubSearchIter self, int i) -> OESubSearchIter
        """
        return _oechem.OESubSearchIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OESubSearch > &":
        """
        Prev(OESubSearchIter self) -> OESubSearchIter
        Prev(OESubSearchIter self, int i) -> OESubSearchIter
        """
        return _oechem.OESubSearchIter_Prev(self, *args)

OESubSearchIter_swigregister = _oechem.OESubSearchIter_swigregister
OESubSearchIter_swigregister(OESubSearchIter)


def OEExpandSuperAtoms(mol: 'OEMolBase') -> "bool":
    """OEExpandSuperAtoms(OEMolBase mol) -> bool"""
    return _oechem.OEExpandSuperAtoms(mol)

def OETriposAtomNames(mol: 'OEMolBase') -> "void":
    """OETriposAtomNames(OEMolBase mol)"""
    return _oechem.OETriposAtomNames(mol)

def OETriposAtomTypes(mol: 'OEMolBase') -> "bool":
    """OETriposAtomTypes(OEMolBase mol) -> bool"""
    return _oechem.OETriposAtomTypes(mol)

def OETriposAtomTypeNames(mol: 'OEMolBase') -> "bool":
    """OETriposAtomTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OETriposAtomTypeNames(mol)

def OETriposBondTypeNames(mol: 'OEMolBase') -> "void":
    """OETriposBondTypeNames(OEMolBase mol)"""
    return _oechem.OETriposBondTypeNames(mol)

def OETriposResonantTypeNames(mol: 'OEMolBase') -> "void":
    """OETriposResonantTypeNames(OEMolBase mol)"""
    return _oechem.OETriposResonantTypeNames(mol)

def OETriposTypeNames(mol: 'OEMolBase') -> "bool":
    """OETriposTypeNames(OEMolBase mol) -> bool"""
    return _oechem.OETriposTypeNames(mol)

def OETriposAtomType(atm: 'OEAtomBase') -> "unsigned int":
    """OETriposAtomType(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETriposAtomType(atm)

def OETriposTypeName(type: 'unsigned int') -> "char const *":
    """OETriposTypeName(unsigned int type) -> char const *"""
    return _oechem.OETriposTypeName(type)

def OETriposTypeElement(type: 'unsigned int') -> "unsigned int":
    """OETriposTypeElement(unsigned int type) -> unsigned int"""
    return _oechem.OETriposTypeElement(type)

def OETriposTypeIndex(name: 'char const *') -> "unsigned int":
    """OETriposTypeIndex(char const * name) -> unsigned int"""
    return _oechem.OETriposTypeIndex(name)

def OETriposOrderAtoms(mol: 'OEMolBase') -> "void":
    """OETriposOrderAtoms(OEMolBase mol)"""
    return _oechem.OETriposOrderAtoms(mol)

def OEGetSoleNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetSoleNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetSoleNeighbor(atm)

def OEGetSingleBondNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetSingleBondNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetSingleBondNeighbor(atm)

def OEGetDoubleBondNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetDoubleBondNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetDoubleBondNeighbor(atm)

def OEGetTripleBondNeighbor(atm: 'OEAtomBase') -> "OEChem::OEAtomBase *":
    """OEGetTripleBondNeighbor(OEAtomBase atm) -> OEAtomBase"""
    return _oechem.OEGetTripleBondNeighbor(atm)

def OEGetSoleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleBond(atm)

def OEGetSoleSingleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleSingleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleSingleBond(atm)

def OEGetSoleDoubleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleDoubleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleDoubleBond(atm)

def OEGetSoleTripleBond(atm: 'OEAtomBase') -> "OEChem::OEBondBase *":
    """OEGetSoleTripleBond(OEAtomBase atm) -> OEBondBase"""
    return _oechem.OEGetSoleTripleBond(atm)

def OEGetOtherNeighbor(*args) -> "OEChem::OEBondBase *":
    """
    OEGetOtherNeighbor(OEAtomBase atm, OEAtomBase nbr) -> OEAtomBase
    OEGetOtherNeighbor(OEAtomBase atm, OEBondBase nbr) -> OEBondBase
    """
    return _oechem.OEGetOtherNeighbor(*args)

def OEIsTerminalOxygen(atm: 'OEAtomBase') -> "bool":
    """OEIsTerminalOxygen(OEAtomBase atm) -> bool"""
    return _oechem.OEIsTerminalOxygen(atm)

def OEIsTerminalSulfur(atm: 'OEAtomBase') -> "bool":
    """OEIsTerminalSulfur(OEAtomBase atm) -> bool"""
    return _oechem.OEIsTerminalSulfur(atm)

def OEHasSingleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasSingleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasSingleBond(atm)

def OEHasDoubleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasDoubleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasDoubleBond(atm)

def OEHasTripleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasTripleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasTripleBond(atm)

def OEHasMultipleBond(atm: 'OEAtomBase') -> "bool":
    """OEHasMultipleBond(OEAtomBase atm) -> bool"""
    return _oechem.OEHasMultipleBond(atm)

def OEHasDoubleBondO(atm: 'OEAtomBase') -> "bool":
    """OEHasDoubleBondO(OEAtomBase atm) -> bool"""
    return _oechem.OEHasDoubleBondO(atm)

def OESingleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OESingleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OESingleBondCount(atm)

def OEDoubleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDoubleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDoubleBondCount(atm)

def OETripleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OETripleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETripleBondCount(atm)

def OEMultipleBondCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEMultipleBondCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEMultipleBondCount(atm)

def OEDoubleBondOCount(atm: 'OEAtomBase') -> "unsigned int":
    """OEDoubleBondOCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OEDoubleBondOCount(atm)

def OETerminalOCount(atm: 'OEAtomBase') -> "unsigned int":
    """OETerminalOCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETerminalOCount(atm)

def OETerminalSCount(atm: 'OEAtomBase') -> "unsigned int":
    """OETerminalSCount(OEAtomBase atm) -> unsigned int"""
    return _oechem.OETerminalSCount(atm)

_oechem.OE_OECHEM_VERSION_swigconstant(_oechem)
OE_OECHEM_VERSION = _oechem.OE_OECHEM_VERSION

def OEChemGetRelease() -> "char const *":
    """OEChemGetRelease() -> char const *"""
    return _oechem.OEChemGetRelease()

def OEChemGetVersion() -> "unsigned int":
    """OEChemGetVersion() -> unsigned int"""
    return _oechem.OEChemGetVersion()

def OEChemGetArch() -> "char const *":
    """OEChemGetArch() -> char const *"""
    return _oechem.OEChemGetArch()

def OEChemGetPlatform() -> "char const *":
    """OEChemGetPlatform() -> char const *"""
    return _oechem.OEChemGetPlatform()

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

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

def OEChemGetSite(*args) -> "std::string":
    """
    OEChemGetSite(std::string & site) -> bool
    OEChemGetSite() -> std::string
    """
    return _oechem.OEChemGetSite(*args)
class OELingoSim(object):
    """Proxy of C++ OEChem::OELingoSim 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__(OEChem::OELingoSim self, OEMolBase mol, unsigned int type) -> OELingoSim
        __init__(OEChem::OELingoSim self, OEMolBase mol) -> OELingoSim
        __init__(OEChem::OELingoSim self, char const * str=None, unsigned int type) -> OELingoSim
        __init__(OEChem::OELingoSim self, char const * str=None) -> OELingoSim
        __init__(OEChem::OELingoSim self) -> OELingoSim
        __init__(OEChem::OELingoSim self, std::string const & str) -> OELingoSim
        __init__(OEChem::OELingoSim self, OELingoSim rhs) -> OELingoSim
        """
        this = _oechem.new_OELingoSim(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OELingoSim
    __del__ = lambda self: None

    def Similarity(self, *args) -> "float":
        """
        Similarity(OELingoSim self, OEMolBase mol) -> float
        Similarity(OELingoSim self, char const * str) -> float
        """
        return _oechem.OELingoSim_Similarity(self, *args)


    def Init(self, *args) -> "bool":
        """
        Init(OELingoSim self, OEMolBase mol) -> bool
        Init(OELingoSim self, char const * str) -> bool
        """
        return _oechem.OELingoSim_Init(self, *args)


    def IsValid(self) -> "bool":
        """IsValid(OELingoSim self) -> bool"""
        return _oechem.OELingoSim_IsValid(self)


    def GetType(self) -> "unsigned int":
        """GetType(OELingoSim self) -> unsigned int"""
        return _oechem.OELingoSim_GetType(self)

OELingoSim_swigregister = _oechem.OELingoSim_swigregister
OELingoSim_swigregister(OELingoSim)


def __typehash__(c: 'char const *') -> "void const *":
    """__typehash__(char const * c) -> void const *"""
    return _oechem.__typehash__(c)
class OETransBase(object):
    """Proxy of C++ OEChem::OETransBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OETransBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OETransBase self) -> OETransBase"""
        return _oechem.OETransBase_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OETransBase self) -> OETransBase"""
        return _oechem.OETransBase_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OETransBase self, float * arg2, float * arg3)
        Extract(OETransBase self, float * arg2, double * arg3)
        Extract(OETransBase self, double * arg2, float * arg3)
        Extract(OETransBase self, double * arg2, double * arg3)
        """
        return _oechem.OETransBase_Extract(self, *args)


    def Transform(self, *args) -> "void":
        """
        Transform(OETransBase self, OEMolBase mol)
        Transform(OETransBase self, OEConfBase conf)
        Transform(OETransBase self, float * coords, unsigned int rows, unsigned int dim)
        Transform(OETransBase self, double * coords, unsigned int rows, unsigned int dim)
        """
        return _oechem.OETransBase_Transform(self, *args)

OETransBase_swigregister = _oechem.OETransBase_swigregister
OETransBase_swigregister(OETransBase)

class OEQuaternion(OETransBase):
    """Proxy of C++ OEChem::OEQuaternion 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__(OEChem::OEQuaternion self) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, double const w, double const x, double const y, double const z) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, float const w, float const x, float const y, float const z) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, double const * vec, double angle) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, float const * vec, float angle) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, double const * quat) -> OEQuaternion
        __init__(OEChem::OEQuaternion self, float const * quat) -> OEQuaternion
        """
        this = _oechem.new_OEQuaternion(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetQuaternion(self, *args) -> "void":
        """
        GetQuaternion(OEQuaternion self, double * quat)
        GetQuaternion(OEQuaternion self, float * quat)
        """
        return _oechem.OEQuaternion_GetQuaternion(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OEQuaternion self) -> OETransBase"""
        return _oechem.OEQuaternion_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OEQuaternion self) -> OETransBase"""
        return _oechem.OEQuaternion_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OEQuaternion self, float * r, float * t)
        Extract(OEQuaternion self, float * r, double * t)
        Extract(OEQuaternion self, double * r, float * t)
        Extract(OEQuaternion self, double * r, double * t)
        """
        return _oechem.OEQuaternion_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OEQuaternion
    __del__ = lambda self: None
OEQuaternion_swigregister = _oechem.OEQuaternion_swigregister
OEQuaternion_swigregister(OEQuaternion)

class OEEuler(OETransBase):
    """Proxy of C++ OEChem::OEEuler 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__(OEChem::OEEuler self) -> OEEuler
        __init__(OEChem::OEEuler self, double const * angles) -> OEEuler
        __init__(OEChem::OEEuler self, float const * angles) -> OEEuler
        __init__(OEChem::OEEuler self, double phi, double theta, double psi) -> OEEuler
        """
        this = _oechem.new_OEEuler(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetAngles(self, *args) -> "void":
        """
        GetAngles(OEEuler self, double * angles)
        GetAngles(OEEuler self, float * angles)
        """
        return _oechem.OEEuler_GetAngles(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OEEuler self) -> OETransBase"""
        return _oechem.OEEuler_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OEEuler self) -> OETransBase"""
        return _oechem.OEEuler_GetInverse(self)


    def GetPhi(self) -> "double":
        """GetPhi(OEEuler self) -> double"""
        return _oechem.OEEuler_GetPhi(self)


    def GetTheta(self) -> "double":
        """GetTheta(OEEuler self) -> double"""
        return _oechem.OEEuler_GetTheta(self)


    def GetPsi(self) -> "double":
        """GetPsi(OEEuler self) -> double"""
        return _oechem.OEEuler_GetPsi(self)


    def SetPhi(self, radians: 'double') -> "void":
        """SetPhi(OEEuler self, double radians)"""
        return _oechem.OEEuler_SetPhi(self, radians)


    def SetTheta(self, radians: 'double') -> "void":
        """SetTheta(OEEuler self, double radians)"""
        return _oechem.OEEuler_SetTheta(self, radians)


    def SetPsi(self, radians: 'double') -> "void":
        """SetPsi(OEEuler self, double radians)"""
        return _oechem.OEEuler_SetPsi(self, radians)


    def Extract(self, *args) -> "void":
        """
        Extract(OEEuler self, float * r, float * t)
        Extract(OEEuler self, float * r, double * t)
        Extract(OEEuler self, double * r, float * t)
        Extract(OEEuler self, double * r, double * t)
        """
        return _oechem.OEEuler_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OEEuler
    __del__ = lambda self: None
OEEuler_swigregister = _oechem.OEEuler_swigregister
OEEuler_swigregister(OEEuler)

class OERotMatrix(OETransBase):
    """Proxy of C++ OEChem::OERotMatrix 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__(OEChem::OERotMatrix self) -> OERotMatrix
        __init__(OEChem::OERotMatrix self, double const * mat) -> OERotMatrix
        __init__(OEChem::OERotMatrix self, float const * mat) -> OERotMatrix
        __init__(OEChem::OERotMatrix self, OERotMatrix rhs) -> OERotMatrix
        """
        this = _oechem.new_OERotMatrix(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetRotMatrix(self, *args) -> "void":
        """
        GetRotMatrix(OERotMatrix self, double * mat)
        GetRotMatrix(OERotMatrix self, float * mat)
        """
        return _oechem.OERotMatrix_GetRotMatrix(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OERotMatrix self) -> OETransBase"""
        return _oechem.OERotMatrix_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OERotMatrix self) -> OETransBase"""
        return _oechem.OERotMatrix_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OERotMatrix self, float * r, float * t)
        Extract(OERotMatrix self, float * r, double * t)
        Extract(OERotMatrix self, double * r, float * t)
        Extract(OERotMatrix self, double * r, double * t)
        """
        return _oechem.OERotMatrix_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OERotMatrix
    __del__ = lambda self: None
OERotMatrix_swigregister = _oechem.OERotMatrix_swigregister
OERotMatrix_swigregister(OERotMatrix)

class OETranslation(OETransBase):
    """Proxy of C++ OEChem::OETranslation 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__(OEChem::OETranslation self) -> OETranslation
        __init__(OEChem::OETranslation self, double const * vec) -> OETranslation
        __init__(OEChem::OETranslation self, float const * vec) -> OETranslation
        __init__(OEChem::OETranslation self, double dx, double dy, double dz) -> OETranslation
        """
        this = _oechem.new_OETranslation(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __iadd__(self, rhs: 'OETranslation') -> "OEChem::OETranslation &":
        """__iadd__(OETranslation self, OETranslation rhs) -> OETranslation"""
        return _oechem.OETranslation___iadd__(self, rhs)


    def GetTranslation(self, *args) -> "void":
        """
        GetTranslation(OETranslation self, double * vec)
        GetTranslation(OETranslation self, float * vec)
        """
        return _oechem.OETranslation_GetTranslation(self, *args)


    def CreateCopy(self) -> "OEChem::OETransBase *":
        """CreateCopy(OETranslation self) -> OETransBase"""
        return _oechem.OETranslation_CreateCopy(self)


    def GetInverse(self) -> "OEChem::OETransBase *":
        """GetInverse(OETranslation self) -> OETransBase"""
        return _oechem.OETranslation_GetInverse(self)


    def Extract(self, *args) -> "void":
        """
        Extract(OETranslation self, float * r, float * t)
        Extract(OETranslation self, float * r, double * t)
        Extract(OETranslation self, double * r, float * t)
        Extract(OETranslation self, double * r, double * t)
        """
        return _oechem.OETranslation_Extract(self, *args)

    __swig_destroy__ = _oechem.delete_OETranslation
    __del__ = lambda self: None
OETranslation_swigregister = _oechem.OETranslation_swigregister
OETranslation_swigregister(OETranslation)

class OETrans(object):
    """Proxy of C++ OEChem::OETrans 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__(OEChem::OETrans self) -> OETrans
        __init__(OEChem::OETrans self, OETransBase tr) -> OETrans
        __init__(OEChem::OETrans self, OETrans rhs) -> OETrans
        """
        this = _oechem.new_OETrans(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __iadd__(self, rhs: 'OETrans') -> "OEChem::OETrans &":
        """__iadd__(OETrans self, OETrans rhs) -> OETrans"""
        return _oechem.OETrans___iadd__(self, rhs)


    def Clear(self) -> "void":
        """Clear(OETrans self)"""
        return _oechem.OETrans_Clear(self)

    __swig_destroy__ = _oechem.delete_OETrans
    __del__ = lambda self: None

    def GetInverse(self, inverse: 'OETrans') -> "bool":
        """GetInverse(OETrans self, OETrans inverse) -> bool"""
        return _oechem.OETrans_GetInverse(self, inverse)


    def PushFront(self, t: 'OETransBase') -> "void":
        """PushFront(OETrans self, OETransBase t)"""
        return _oechem.OETrans_PushFront(self, t)


    def PushBack(self, t: 'OETransBase') -> "void":
        """PushBack(OETrans self, OETransBase t)"""
        return _oechem.OETrans_PushBack(self, t)


    def Compress(self) -> "void":
        """Compress(OETrans self)"""
        return _oechem.OETrans_Compress(self)


    def GetTransforms(self) -> "OESystem::OEIterBase< OEChem::OETransBase > *":
        """GetTransforms(OETrans self) -> OESystem::OEIterBase< OEChem::OETransBase > *"""
        return _oechem.OETrans_GetTransforms(self)


    def IsValid(self):
      return _oechem.OETrans___nonzero__(self)



    def Transform(self, *args) -> "void":
        """
        Transform(OETrans self, float * coords, unsigned int ncoords, unsigned int dim)
        Transform(OETrans self, double * coords, unsigned int ncoords, unsigned int dim)
        Transform(OETrans self, OEConfBase conf)
        Transform(OETrans self, OEMolBase mol)
        """
        return _oechem.OETrans_Transform(self, *args)

OETrans_swigregister = _oechem.OETrans_swigregister
OETrans_swigregister(OETrans)



def OEAddLicenseFromHttp(url):
    """Retrieve a presumably valid license from url and add its permissions to the licensing system.
       Only HTTP and HTTPS protocols are supported.  Query parameters in url are ignored."""

    import sys
    if sys.version_info[0] >= 3:
        import http.client as httplib
        from urllib.parse import urlparse
    else:
        import httplib
        from urlparse import urlparse

    if not url:
        raise Exception("URL can't be None and must not be empty")

    parts = urlparse(url)
    conn = None
    try:
        if parts.scheme == "http":
            conn = httplib.HTTPConnection(parts.netloc, timeout=10)
        elif parts.scheme == "https":
            conn = httplib.HTTPSConnection(parts.netloc, timeout=10)
        else:
            raise Exception("Invalid url scheme: " + parts.scheme)

        conn.request("GET", parts.path)
        response = conn.getresponse()
        if response.status != httplib.OK:
           raise Exception("Can't download license: server response status: %d %s" % (response.status, response.reason))

        ctype = response.getheader("Content-type")
        if ctype != "text/plain" and ctype != "text/html; charset=utf-8":
            raise Exception("Invalid Content-type encoding: " + response.getheader("Content-type") )

        licenseContent = response.read()
        if sys.version_info[0] >= 3:
            licenseContent = licenseContent.decode("UTF-8")
        OEAddLicenseData(licenseContent)
    finally:
        if conn:
            conn.close()


def OEAddLicenseData(data: 'std::string const &') -> "void":
    """OEAddLicenseData(std::string const & data)"""
    return _oechem.OEAddLicenseData(data)

def OEAddLicenseKey(key: 'char const *', licensee: 'char const *', site: 'char const *') -> "int":
    """OEAddLicenseKey(char const * key, char const * licensee, char const * site) -> int"""
    return _oechem.OEAddLicenseKey(key, licensee, site)

def OESetLicenseFile(fname: 'char const *') -> "void":
    """OESetLicenseFile(char const * fname)"""
    return _oechem.OESetLicenseFile(fname)

def OESetLicenseFileCheck(state: 'bool') -> "void":
    """OESetLicenseFileCheck(bool state)"""
    return _oechem.OESetLicenseFileCheck(state)

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

def OEGetIPAddress() -> "unsigned char *":
    """OEGetIPAddress() -> unsigned char *"""
    return _oechem.OEGetIPAddress()

def OEGetHostIdent() -> "unsigned int":
    """OEGetHostIdent() -> unsigned int"""
    return _oechem.OEGetHostIdent()

def OEGetDomainName() -> "char *":
    """OEGetDomainName() -> char *"""
    return _oechem.OEGetDomainName()

def OEGetHostName() -> "char *":
    """OEGetHostName() -> char *"""
    return _oechem.OEGetHostName()

def OEGetNumProcessors() -> "unsigned int":
    """OEGetNumProcessors() -> unsigned int"""
    return _oechem.OEGetNumProcessors()

_oechem.OE_STREAM_BUFFER_SIZE_swigconstant(_oechem)
OE_STREAM_BUFFER_SIZE = _oechem.OE_STREAM_BUFFER_SIZE

_oechem.OE_FILE_SEP_CHAR_swigconstant(_oechem)
OE_FILE_SEP_CHAR = _oechem.OE_FILE_SEP_CHAR

_oechem.OEEOF_swigconstant(_oechem)
OEEOF = _oechem.OEEOF
class OEIOError(object):
    """Proxy of C++ OEPlatform::OEIOError 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__(OEPlatform::OEIOError self, char const * msg) -> OEIOError
        __init__(OEPlatform::OEIOError self) -> OEIOError
        """
        this = _oechem.new_OEIOError(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def what(self) -> "char const *":
        """what(OEIOError self) -> char const *"""
        return _oechem.OEIOError_what(self)

    __swig_destroy__ = _oechem.delete_OEIOError
    __del__ = lambda self: None
OEIOError_swigregister = _oechem.OEIOError_swigregister
OEIOError_swigregister(OEIOError)

class oestream(object):
    """Proxy of C++ OEPlatform::oestream class."""

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

    def __init__(self):
        """__init__(OEPlatform::oestream self) -> oestream"""
        this = _oechem.new_oestream()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oestream
    __del__ = lambda self: None
    beg = _oechem.oestream_beg
    cur = _oechem.oestream_cur
    end = _oechem.oestream_end

    def eof(self) -> "bool":
        """eof(oestream self) -> bool"""
        return _oechem.oestream_eof(self)


    def length(self) -> "oefpos_t":
        """length(oestream self) -> oefpos_t"""
        return _oechem.oestream_length(self)


    def size(self) -> "oefpos_t":
        """size(oestream self) -> oefpos_t"""
        return _oechem.oestream_size(self)


    def tell(self) -> "oefpos_t":
        """tell(oestream self) -> oefpos_t"""
        return _oechem.oestream_tell(self)


    def seek(self, *args) -> "bool":
        """
        seek(oestream self, oefpos_t pos) -> bool
        seek(oestream self, oefpos_t offset, OEPlatform::oestream::seek_dir dir) -> bool
        """
        return _oechem.oestream_seek(self, *args)


    def rewind(self) -> "bool":
        """rewind(oestream self) -> bool"""
        return _oechem.oestream_rewind(self)


    def IsValid(self):
      return _oechem.oestream___nonzero__(self)


oestream_swigregister = _oechem.oestream_swigregister
oestream_swigregister(oestream)

class oeistream(oestream):
    """Proxy of C++ OEPlatform::oeistream class."""

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

    def __init__(self):
        """__init__(OEPlatform::oeistream self) -> oeistream"""
        this = _oechem.new_oeistream()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def open(self, *args) -> "bool":
        """
        open(oeistream self, char const * name) -> bool
        open(oeistream self, unsigned char * buffer, oesize_t len) -> bool
        """
        return _oechem.oeistream_open(self, *args)


    def close(self) -> "void":
        """close(oeistream self)"""
        return _oechem.oeistream_close(self)


    def getbyte(self) -> "int":
        """getbyte(oeistream self) -> int"""
        return _oechem.oeistream_getbyte(self)


    def get(self, *args) -> "bool":
        """
        get(oeistream self, char & c) -> bool
        get(oeistream self, signed char & c) -> bool
        get(oeistream self, unsigned char & c) -> bool
        """
        return _oechem.oeistream_get(self, *args)


    def skipbyte(self) -> "bool":
        """skipbyte(oeistream self) -> bool"""
        return _oechem.oeistream_skipbyte(self)


    def peekbyte(self) -> "int":
        """peekbyte(oeistream self) -> int"""
        return _oechem.oeistream_peekbyte(self)


    def skip(self, len: 'oefpos_t') -> "bool":
        """skip(oeistream self, oefpos_t len) -> bool"""
        return _oechem.oeistream_skip(self, len)


    def skipline(self) -> "bool":
        """skipline(oeistream self) -> bool"""
        return _oechem.oeistream_skipline(self)


    def getline(self, *args) -> "bool":
        """
        getline(oeistream self, std::string & sbuffer, oesize_t max) -> bool
        getline(oeistream self, std::string & sbuffer) -> bool
        """
        return _oechem.oeistream_getline(self, *args)


    def gettoken(self, sbuffer: 'std::string &', max: 'oesize_t') -> "bool":
        """gettoken(oeistream self, std::string & sbuffer, oesize_t max) -> bool"""
        return _oechem.oeistream_gettoken(self, sbuffer, max)


    def read(self, *args) -> "PyObject *":
        """
        read(oeistream self, std::string & sbuffer) -> oesize_t
        read(oeistream self, oesize_t size) -> PyObject
        read(oeistream self) -> PyObject *
        """
        return _oechem.oeistream_read(self, *args)

    __swig_destroy__ = _oechem.delete_oeistream
    __del__ = lambda self: None
oeistream_swigregister = _oechem.oeistream_swigregister
oeistream_swigregister(oeistream)

class oeostream(oestream):
    """Proxy of C++ OEPlatform::oeostream class."""

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

    def __init__(self):
        """__init__(OEPlatform::oeostream self) -> oeostream"""
        this = _oechem.new_oeostream()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def open(self, *args) -> "bool":
        """
        open(oeostream self, char const * name) -> bool
        open(oeostream self, unsigned char * buffer, oesize_t len) -> bool
        """
        return _oechem.oeostream_open(self, *args)


    def close(self) -> "void":
        """close(oeostream self)"""
        return _oechem.oeostream_close(self)


    def flush(self) -> "bool":
        """flush(oeostream self) -> bool"""
        return _oechem.oeostream_flush(self)


    def putbyte(self, c: 'char') -> "bool":
        """putbyte(oeostream self, char c) -> bool"""
        return _oechem.oeostream_putbyte(self, c)


    def write(self, *args) -> "PyObject *":
        """
        write(oeostream self, char const * buffer, oesize_t len) -> oesize_t
        write(oeostream self, unsigned char const * buffer, oesize_t len) -> oesize_t
        write(oeostream self, signed char const * buffer, oesize_t len) -> oesize_t
        write(oeostream self, std::string const & buffer, oesize_t len) -> oesize_t
        write(oeostream self, std::string const & buffer) -> oesize_t
        write(oeostream self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oeostream_write(self, *args)

    __swig_destroy__ = _oechem.delete_oeostream
    __del__ = lambda self: None
oeostream_swigregister = _oechem.oeostream_swigregister
oeostream_swigregister(oeostream)


def OEOpenIStream(arg1: 'char const *') -> "OEPlatform::oeistream *":
    """OEOpenIStream(char const * arg1) -> oeistream"""
    return _oechem.OEOpenIStream(arg1)

def OEOpenOStream(arg1: 'char const *') -> "OEPlatform::oeostream *":
    """OEOpenOStream(char const * arg1) -> oeostream"""
    return _oechem.OEOpenOStream(arg1)

def OECloseIStream(arg1: 'oeistream') -> "void":
    """OECloseIStream(oeistream arg1)"""
    return _oechem.OECloseIStream(arg1)

def OECloseOStream(arg1: 'oeostream') -> "void":
    """OECloseOStream(oeostream arg1)"""
    return _oechem.OECloseOStream(arg1)

def OERegisterIStream(arg1: 'char const *', arg2: 'oeistream_alloc_t', arg3: 'oeistream_dealloc_t') -> "bool":
    """OERegisterIStream(char const * arg1, oeistream_alloc_t arg2, oeistream_dealloc_t arg3) -> bool"""
    return _oechem.OERegisterIStream(arg1, arg2, arg3)

def OERegisterOStream(arg1: 'char const *', arg2: 'oeostream_alloc_t', arg3: 'oeostream_dealloc_t') -> "bool":
    """OERegisterOStream(char const * arg1, oeostream_alloc_t arg2, oeostream_dealloc_t arg3) -> bool"""
    return _oechem.OERegisterOStream(arg1, arg2, arg3)
class oeisstream(oeistream):
    """Proxy of C++ OEPlatform::oeisstream class."""

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

    def clear(self) -> "void":
        """clear(oeisstream self)"""
        return _oechem.oeisstream_clear(self)

    __swig_destroy__ = _oechem.delete_oeisstream
    __del__ = lambda self: None

    def reset(self) -> "bool":
        """reset(oeisstream self) -> bool"""
        return _oechem.oeisstream_reset(self)


    def getbuffer(self, buffer: 'std::string &') -> "bool":
        """getbuffer(oeisstream self, std::string & buffer) -> bool"""
        return _oechem.oeisstream_getbuffer(self, buffer)


    def __str__(self) -> "std::string":
        """__str__(oeisstream self) -> std::string"""
        return _oechem.oeisstream___str__(self)


    def __init__(self, *args):
        """
        __init__(OEPlatform::oeisstream self, char const * buffer, oesize_t len, bool copy=True) -> oeisstream
        __init__(OEPlatform::oeisstream self, char const * buffer, oesize_t len) -> oeisstream
        __init__(OEPlatform::oeisstream self, std::string const & buffer) -> oeisstream
        __init__(OEPlatform::oeisstream self) -> oeisstream
        __init__(OEPlatform::oeisstream self, oeisstream rhs) -> oeisstream
        __init__(OEPlatform::oeisstream self, PyObject * bytes) -> oeisstream
        """
        this = _oechem.new_oeisstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def set(self, *args) -> "PyObject *":
        """
        set(oeisstream self, char const * arg2, oesize_t arg3, bool arg4) -> bool
        set(oeisstream self, std::string const & arg2) -> bool
        set(oeisstream self, PyObject * bytes) -> PyObject *
        """
        return _oechem.oeisstream_set(self, *args)

oeisstream_swigregister = _oechem.oeisstream_swigregister
oeisstream_swigregister(oeisstream)

class oeosstream(oeostream):
    """Proxy of C++ OEPlatform::oeosstream 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__(OEPlatform::oeosstream self) -> oeosstream
        __init__(OEPlatform::oeosstream self, unsigned char const * arg2, oesize_t arg3) -> oeosstream
        __init__(OEPlatform::oeosstream self, char const * arg2) -> oeosstream
        """
        this = _oechem.new_oeosstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeosstream
    __del__ = lambda self: None

    def clear(self) -> "void":
        """clear(oeosstream self)"""
        return _oechem.oeosstream_clear(self)


    def set(self, *args) -> "bool":
        """
        set(oeosstream self, char const * arg2) -> bool
        set(oeosstream self, unsigned char const * arg2, oesize_t arg3) -> bool
        """
        return _oechem.oeosstream_set(self, *args)


    def __str__(self) -> "std::string":
        """__str__(oeosstream self) -> std::string"""
        return _oechem.oeosstream___str__(self)


    def str(self) -> "PyObject *":
        """str(oeosstream self) -> PyObject *"""
        return _oechem.oeosstream_str(self)

oeosstream_swigregister = _oechem.oeosstream_swigregister
oeosstream_swigregister(oeosstream)

class oeifstream(oeistream):
    """Proxy of C++ OEPlatform::oeifstream 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__(OEPlatform::oeifstream self) -> oeifstream
        __init__(OEPlatform::oeifstream self, int ifd) -> oeifstream
        __init__(OEPlatform::oeifstream self, char const * filename) -> oeifstream
        """
        this = _oechem.new_oeifstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeifstream
    __del__ = lambda self: None

    def fd(self) -> "int":
        """fd(oeifstream self) -> int"""
        return _oechem.oeifstream_fd(self)


    def openfd(self, ifd: 'int', closefd: 'bool') -> "bool":
        """openfd(oeifstream self, int ifd, bool closefd) -> bool"""
        return _oechem.oeifstream_openfd(self, ifd, closefd)


    def pread(self, buffer: 'char *', len: 'oesize_t', offset: 'oefpos_t') -> "oesize_t":
        """pread(oeifstream self, char * buffer, oesize_t len, oefpos_t offset) -> oesize_t"""
        return _oechem.oeifstream_pread(self, buffer, len, offset)

oeifstream_swigregister = _oechem.oeifstream_swigregister
oeifstream_swigregister(oeifstream)

class oeofstream(oeostream):
    """Proxy of C++ OEPlatform::oeofstream 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__(OEPlatform::oeofstream self) -> oeofstream
        __init__(OEPlatform::oeofstream self, int ofd) -> oeofstream
        __init__(OEPlatform::oeofstream self, char const * filename) -> oeofstream
        """
        this = _oechem.new_oeofstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeofstream
    __del__ = lambda self: None

    def fd(self) -> "int":
        """fd(oeofstream self) -> int"""
        return _oechem.oeofstream_fd(self)


    def openfd(self, ofd: 'int', closefd: 'bool') -> "bool":
        """openfd(oeofstream self, int ofd, bool closefd) -> bool"""
        return _oechem.oeofstream_openfd(self, ofd, closefd)


    def append(self, filename: 'char const *') -> "bool":
        """append(oeofstream self, char const * filename) -> bool"""
        return _oechem.oeofstream_append(self, filename)

oeofstream_swigregister = _oechem.oeofstream_swigregister
oeofstream_swigregister(oeofstream)

class oeiofstream(oeofstream):
    """Proxy of C++ OEPlatform::oeiofstream 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__(OEPlatform::oeiofstream self) -> oeiofstream
        __init__(OEPlatform::oeiofstream self, char const * filename) -> oeiofstream
        __init__(OEPlatform::oeiofstream self, std::string const & filename) -> oeiofstream
        """
        this = _oechem.new_oeiofstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeiofstream
    __del__ = lambda self: None

    def pread(self, buffer: 'char *', len: 'oesize_t', offset: 'oefpos_t') -> "oesize_t":
        """pread(oeiofstream self, char * buffer, oesize_t len, oefpos_t offset) -> oesize_t"""
        return _oechem.oeiofstream_pread(self, buffer, len, offset)

oeiofstream_swigregister = _oechem.oeiofstream_swigregister
oeiofstream_swigregister(oeiofstream)

class oemultiostream(oeostream):
    """Proxy of C++ OEPlatform::oemultiostream class."""

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

    def __init__(self):
        """__init__(OEPlatform::oemultiostream self) -> oemultiostream"""
        this = _oechem.new_oemultiostream()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oemultiostream
    __del__ = lambda self: None

    def addstream(self, ostr: 'oeostream', owned: 'bool'=False) -> "void":
        """
        addstream(oemultiostream self, oeostream ostr, bool owned=False)
        addstream(oemultiostream self, oeostream ostr)
        """
        return _oechem.oemultiostream_addstream(self, ostr, owned)


    def clear(self) -> "void":
        """clear(oemultiostream self)"""
        return _oechem.oemultiostream_clear(self)

oemultiostream_swigregister = _oechem.oemultiostream_swigregister
oemultiostream_swigregister(oemultiostream)

class oeiwrapperstream(oeistream):
    """Proxy of C++ OEPlatform::oeiwrapperstream 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__(OEPlatform::oeiwrapperstream self) -> oeiwrapperstream
        __init__(OEPlatform::oeiwrapperstream self, oeistream isptr, bool deleteptr) -> oeiwrapperstream
        """
        this = _oechem.new_oeiwrapperstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeiwrapperstream
    __del__ = lambda self: None

    def stream(self) -> "OEPlatform::oeistream *":
        """stream(oeiwrapperstream self) -> oeistream"""
        return _oechem.oeiwrapperstream_stream(self)


    def clear(self) -> "void":
        """clear(oeiwrapperstream self)"""
        return _oechem.oeiwrapperstream_clear(self)


    def set(self, isptr: 'oeistream', deleteptr: 'bool') -> "bool":
        """set(oeiwrapperstream self, oeistream isptr, bool deleteptr) -> bool"""
        return _oechem.oeiwrapperstream_set(self, isptr, deleteptr)

oeiwrapperstream_swigregister = _oechem.oeiwrapperstream_swigregister
oeiwrapperstream_swigregister(oeiwrapperstream)

class oeowrapperstream(oeostream):
    """Proxy of C++ OEPlatform::oeowrapperstream 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__(OEPlatform::oeowrapperstream self) -> oeowrapperstream
        __init__(OEPlatform::oeowrapperstream self, oeostream osptr, bool deleteptr) -> oeowrapperstream
        """
        this = _oechem.new_oeowrapperstream(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_oeowrapperstream
    __del__ = lambda self: None

    def stream(self) -> "OEPlatform::oeostream *":
        """stream(oeowrapperstream self) -> oeostream"""
        return _oechem.oeowrapperstream_stream(self)


    def clear(self) -> "void":
        """clear(oeowrapperstream self)"""
        return _oechem.oeowrapperstream_clear(self)


    def set(self, osptr: 'oeostream', deleteptr: 'bool') -> "bool":
        """set(oeowrapperstream self, oeostream osptr, bool deleteptr) -> bool"""
        return _oechem.oeowrapperstream_set(self, osptr, deleteptr)

oeowrapperstream_swigregister = _oechem.oeowrapperstream_swigregister
oeowrapperstream_swigregister(oeowrapperstream)


def GetListValues(*args) -> "void":
    """
    GetListValues(PyObject * list, unsigned int size, float const * values)
    GetListValues(PyObject * list, unsigned int size, double const * values)
    GetListValues(PyObject * list, unsigned int size, int const * values)
    GetListValues(PyObject * list, unsigned int size, bool const * values)
    """
    return _oechem.GetListValues(*args)

def SetListValues(*args) -> "void":
    """
    SetListValues(float * v, unsigned int size, PyObject * p)
    SetListValues(double * v, unsigned int size, PyObject * p)
    SetListValues(int * v, unsigned int size, PyObject * p)
    SetListValues(bool * v, unsigned int size, PyObject * p)
    """
    return _oechem.SetListValues(*args)

def CheckListValues(*args) -> "bool":
    """
    CheckListValues(float * arg1, unsigned int size, PyObject * p) -> bool
    CheckListValues(double * arg1, unsigned int size, PyObject * p) -> bool
    CheckListValues(int * arg1, unsigned int size, PyObject * p) -> bool
    CheckListValues(bool * arg1, unsigned int size, PyObject * p) -> bool
    """
    return _oechem.CheckListValues(*args)
class OEGridAbstractBase(OEBase):
    """Proxy of C++ OESystem::OEGridAbstractBase 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 GetTitle(self) -> "std::string":
        """GetTitle(OEGridAbstractBase self) -> std::string"""
        return _oechem.OEGridAbstractBase_GetTitle(self)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OEGridAbstractBase self, std::string const & title) -> bool"""
        return _oechem.OEGridAbstractBase_SetTitle(self, title)


    def GetSpacing(self) -> "float":
        """GetSpacing(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetSpacing(self)


    def IsSpacingSet(self) -> "bool":
        """IsSpacingSet(OEGridAbstractBase self) -> bool"""
        return _oechem.OEGridAbstractBase_IsSpacingSet(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetSize(self)


    def GetXDim(self) -> "unsigned int":
        """GetXDim(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetXDim(self)


    def GetYDim(self) -> "unsigned int":
        """GetYDim(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetYDim(self)


    def GetZDim(self) -> "unsigned int":
        """GetZDim(OEGridAbstractBase self) -> unsigned int"""
        return _oechem.OEGridAbstractBase_GetZDim(self)


    def GetXMid(self) -> "float":
        """GetXMid(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetXMid(self)


    def GetYMid(self) -> "float":
        """GetYMid(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetYMid(self)


    def GetZMid(self) -> "float":
        """GetZMid(OEGridAbstractBase self) -> float"""
        return _oechem.OEGridAbstractBase_GetZMid(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEGridAbstractBase self) -> void const *"""
        return _oechem.OEGridAbstractBase_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEGridAbstractBase self, void const * type) -> bool"""
        return _oechem.OEGridAbstractBase_IsDataType(self, type)


    def Clear(self) -> "void":
        """Clear(OEGridAbstractBase self)"""
        return _oechem.OEGridAbstractBase_Clear(self)


    def GetDim(self) -> "PyObject *":
        """GetDim(OEGridAbstractBase self) -> PyObject *"""
        return _oechem.OEGridAbstractBase_GetDim(self)


    def GetMid(self) -> "PyObject *":
        """GetMid(OEGridAbstractBase self) -> PyObject *"""
        return _oechem.OEGridAbstractBase_GetMid(self)

    __swig_destroy__ = _oechem.delete_OEGridAbstractBase
    __del__ = lambda self: None
OEGridAbstractBase_swigregister = _oechem.OEGridAbstractBase_swigregister
OEGridAbstractBase_swigregister(OEGridAbstractBase)
oein = cvar.oein
oeout = cvar.oeout
oeerr = cvar.oeerr
oenul = cvar.oenul

class OEGridBase(OEGridAbstractBase):
    """Proxy of C++ OESystem::OEGridBase 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")
    __repr__ = _swig_repr

    def Clear(self) -> "void":
        """Clear(OEGridBase self)"""
        return _oechem.OEGridBase_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEGridBase self) -> OEBase"""
        return _oechem.OEGridBase_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEGridBase self) -> void const *"""
        return _oechem.OEGridBase_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEGridBase self, void const * type) -> bool"""
        return _oechem.OEGridBase_IsDataType(self, type)


    def GetTitle(self) -> "std::string":
        """GetTitle(OEGridBase self) -> std::string"""
        return _oechem.OEGridBase_GetTitle(self)


    def IsTitleSet(self) -> "bool":
        """IsTitleSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsTitleSet(self)


    def SetTitle(self, title: 'std::string const &') -> "bool":
        """SetTitle(OEGridBase self, std::string const & title) -> bool"""
        return _oechem.OEGridBase_SetTitle(self, title)


    def GetSpacing(self) -> "float":
        """GetSpacing(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetSpacing(self)


    def IsSpacingSet(self) -> "bool":
        """IsSpacingSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsSpacingSet(self)


    def GetSize(self) -> "unsigned int":
        """GetSize(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetSize(self)


    def GetXDim(self) -> "unsigned int":
        """GetXDim(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetXDim(self)


    def GetYDim(self) -> "unsigned int":
        """GetYDim(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetYDim(self)


    def GetZDim(self) -> "unsigned int":
        """GetZDim(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetZDim(self)


    def GetXMid(self) -> "float":
        """GetXMid(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetXMid(self)


    def GetYMid(self) -> "float":
        """GetYMid(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetYMid(self)


    def GetZMid(self) -> "float":
        """GetZMid(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetZMid(self)


    def IsXMidSet(self) -> "bool":
        """IsXMidSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsXMidSet(self)


    def IsYMidSet(self) -> "bool":
        """IsYMidSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsYMidSet(self)


    def IsZMidSet(self) -> "bool":
        """IsZMidSet(OEGridBase self) -> bool"""
        return _oechem.OEGridBase_IsZMidSet(self)


    def IsInGrid(self, *args) -> "bool":
        """
        IsInGrid(OEGridBase self, float x, float y, float z) -> bool
        IsInGrid(OEGridBase self, unsigned int ix, unsigned int iy, unsigned int iz) -> bool
        """
        return _oechem.OEGridBase_IsInGrid(self, *args)


    def GetXInc(self) -> "unsigned int":
        """GetXInc(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetXInc(self)


    def GetYInc(self) -> "unsigned int":
        """GetYInc(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetYInc(self)


    def GetZInc(self) -> "unsigned int":
        """GetZInc(OEGridBase self) -> unsigned int"""
        return _oechem.OEGridBase_GetZInc(self)


    def GetX(self, ix: 'unsigned int') -> "float":
        """GetX(OEGridBase self, unsigned int ix) -> float"""
        return _oechem.OEGridBase_GetX(self, ix)


    def GetY(self, iy: 'unsigned int') -> "float":
        """GetY(OEGridBase self, unsigned int iy) -> float"""
        return _oechem.OEGridBase_GetY(self, iy)


    def GetZ(self, iz: 'unsigned int') -> "float":
        """GetZ(OEGridBase self, unsigned int iz) -> float"""
        return _oechem.OEGridBase_GetZ(self, iz)


    def GetXIdx(self, *args) -> "unsigned int":
        """
        GetXIdx(OEGridBase self, float x) -> unsigned int
        GetXIdx(OEGridBase self, unsigned int el) -> unsigned int
        """
        return _oechem.OEGridBase_GetXIdx(self, *args)


    def GetYIdx(self, *args) -> "unsigned int":
        """
        GetYIdx(OEGridBase self, float y) -> unsigned int
        GetYIdx(OEGridBase self, unsigned int el) -> unsigned int
        """
        return _oechem.OEGridBase_GetYIdx(self, *args)


    def GetZIdx(self, *args) -> "unsigned int":
        """
        GetZIdx(OEGridBase self, float z) -> unsigned int
        GetZIdx(OEGridBase self, unsigned int el) -> unsigned int
        """
        return _oechem.OEGridBase_GetZIdx(self, *args)


    def GetXMax(self) -> "float":
        """GetXMax(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetXMax(self)


    def GetXMin(self) -> "float":
        """GetXMin(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetXMin(self)


    def GetYMax(self) -> "float":
        """GetYMax(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetYMax(self)


    def GetYMin(self) -> "float":
        """GetYMin(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetYMin(self)


    def GetZMax(self) -> "float":
        """GetZMax(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetZMax(self)


    def GetZMin(self) -> "float":
        """GetZMin(OEGridBase self) -> float"""
        return _oechem.OEGridBase_GetZMin(self)


    def GridIdxToElement(self, ix: 'unsigned int', iy: 'unsigned int', iz: 'unsigned int') -> "PyObject *":
        """GridIdxToElement(OEGridBase self, unsigned int ix, unsigned int iy, unsigned int iz) -> PyObject *"""
        return _oechem.OEGridBase_GridIdxToElement(self, ix, iy, iz)


    def SpatialCoordToElement(self, x: 'float', y: 'float', z: 'float') -> "PyObject *":
        """SpatialCoordToElement(OEGridBase self, float x, float y, float z) -> PyObject *"""
        return _oechem.OEGridBase_SpatialCoordToElement(self, x, y, z)


    def ElementToSpatialCoord(self, el: 'unsigned int') -> "PyObject *":
        """ElementToSpatialCoord(OEGridBase self, unsigned int el) -> PyObject *"""
        return _oechem.OEGridBase_ElementToSpatialCoord(self, el)


    def ElementToGridIdx(self, el: 'unsigned int') -> "PyObject *":
        """ElementToGridIdx(OEGridBase self, unsigned int el) -> PyObject *"""
        return _oechem.OEGridBase_ElementToGridIdx(self, el)


    def GridIdxToSpatialCoord(self, ix: 'unsigned int', iy: 'unsigned int', iz: 'unsigned int') -> "PyObject *":
        """GridIdxToSpatialCoord(OEGridBase self, unsigned int ix, unsigned int iy, unsigned int iz) -> PyObject *"""
        return _oechem.OEGridBase_GridIdxToSpatialCoord(self, ix, iy, iz)


    def SpatialCoordToGridIdx(self, x: 'float', y: 'float', z: 'float') -> "PyObject *":
        """SpatialCoordToGridIdx(OEGridBase self, float x, float y, float z) -> PyObject *"""
        return _oechem.OEGridBase_SpatialCoordToGridIdx(self, x, y, z)

    __swig_destroy__ = _oechem.delete_OEGridBase
    __del__ = lambda self: None
OEGridBase_swigregister = _oechem.OEGridBase_swigregister
OEGridBase_swigregister(OEGridBase)

class OEFixedDoubleGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(double)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedDoubleGrid self) -> OEBase"""
        return _oechem.OEFixedDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedDoubleGrid self) -> void const *"""
        return _oechem.OEFixedDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEFixedDoubleGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "double":
        """
        GetValue(OEFixedDoubleGrid self, unsigned int el) -> double
        GetValue(OEFixedDoubleGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> double
        GetValue(OEFixedDoubleGrid self, float x, float y, float z) -> double
        """
        return _oechem.OEFixedDoubleGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "double":
        """__getitem__(OEFixedDoubleGrid self, unsigned int el) -> double"""
        return _oechem.OEFixedDoubleGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedDoubleGrid self) -> PyObject *"""
        return _oechem.OEFixedDoubleGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedDoubleGrid self) -> PyObject *"""
        return _oechem.OEFixedDoubleGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedDoubleGrid self, unsigned int el, double value)
        SetValue(OEFixedDoubleGrid self, unsigned int ix, unsigned int iy, unsigned int iz, double value)
        SetValue(OEFixedDoubleGrid self, float x, float y, float z, double value)
        """
        return _oechem.OEFixedDoubleGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'double') -> "void":
        """__setitem__(OEFixedDoubleGrid self, unsigned int el, double value)"""
        return _oechem.OEFixedDoubleGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedDoubleGrid self, double const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedDoubleGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedDoubleGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedDoubleGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedDoubleGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedDoubleGrid
    __del__ = lambda self: None
OEFixedDoubleGrid_swigregister = _oechem.OEFixedDoubleGrid_swigregister
OEFixedDoubleGrid_swigregister(OEFixedDoubleGrid)

class OEFixedFloatGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(float)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedFloatGrid self) -> OEBase"""
        return _oechem.OEFixedFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedFloatGrid self) -> void const *"""
        return _oechem.OEFixedFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedFloatGrid self, void const * type) -> bool"""
        return _oechem.OEFixedFloatGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "float":
        """
        GetValue(OEFixedFloatGrid self, unsigned int el) -> float
        GetValue(OEFixedFloatGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> float
        GetValue(OEFixedFloatGrid self, float x, float y, float z) -> float
        """
        return _oechem.OEFixedFloatGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "float":
        """__getitem__(OEFixedFloatGrid self, unsigned int el) -> float"""
        return _oechem.OEFixedFloatGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedFloatGrid self) -> PyObject *"""
        return _oechem.OEFixedFloatGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedFloatGrid self) -> PyObject *"""
        return _oechem.OEFixedFloatGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedFloatGrid self, unsigned int el, float value)
        SetValue(OEFixedFloatGrid self, unsigned int ix, unsigned int iy, unsigned int iz, float value)
        SetValue(OEFixedFloatGrid self, float x, float y, float z, float value)
        """
        return _oechem.OEFixedFloatGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'float') -> "void":
        """__setitem__(OEFixedFloatGrid self, unsigned int el, float value)"""
        return _oechem.OEFixedFloatGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedFloatGrid self, float const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedFloatGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedFloatGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedFloatGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedFloatGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedFloatGrid
    __del__ = lambda self: None
OEFixedFloatGrid_swigregister = _oechem.OEFixedFloatGrid_swigregister
OEFixedFloatGrid_swigregister(OEFixedFloatGrid)

class OEFixedIntGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(int)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedIntGrid self) -> OEBase"""
        return _oechem.OEFixedIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedIntGrid self) -> void const *"""
        return _oechem.OEFixedIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedIntGrid self, void const * type) -> bool"""
        return _oechem.OEFixedIntGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "int":
        """
        GetValue(OEFixedIntGrid self, unsigned int el) -> int
        GetValue(OEFixedIntGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> int
        GetValue(OEFixedIntGrid self, float x, float y, float z) -> int
        """
        return _oechem.OEFixedIntGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "int":
        """__getitem__(OEFixedIntGrid self, unsigned int el) -> int"""
        return _oechem.OEFixedIntGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedIntGrid self) -> PyObject *"""
        return _oechem.OEFixedIntGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedIntGrid self) -> PyObject *"""
        return _oechem.OEFixedIntGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedIntGrid self, unsigned int el, int value)
        SetValue(OEFixedIntGrid self, unsigned int ix, unsigned int iy, unsigned int iz, int value)
        SetValue(OEFixedIntGrid self, float x, float y, float z, int value)
        """
        return _oechem.OEFixedIntGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'int') -> "void":
        """__setitem__(OEFixedIntGrid self, unsigned int el, int value)"""
        return _oechem.OEFixedIntGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedIntGrid self, int const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedIntGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedIntGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedIntGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedIntGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedIntGrid
    __del__ = lambda self: None
OEFixedIntGrid_swigregister = _oechem.OEFixedIntGrid_swigregister
OEFixedIntGrid_swigregister(OEFixedIntGrid)

class OEFixedBoolGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedGrid<(bool)> class."""

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

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedBoolGrid self) -> OEBase"""
        return _oechem.OEFixedBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedBoolGrid self) -> void const *"""
        return _oechem.OEFixedBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedBoolGrid self, void const * type) -> bool"""
        return _oechem.OEFixedBoolGrid_IsDataType(self, type)


    def GetValue(self, *args) -> "bool":
        """
        GetValue(OEFixedBoolGrid self, unsigned int el) -> bool
        GetValue(OEFixedBoolGrid self, unsigned int ix, unsigned int iy, unsigned int iz) -> bool
        GetValue(OEFixedBoolGrid self, float x, float y, float z) -> bool
        """
        return _oechem.OEFixedBoolGrid_GetValue(self, *args)


    def __getitem__(self, el: 'unsigned int') -> "bool":
        """__getitem__(OEFixedBoolGrid self, unsigned int el) -> bool"""
        return _oechem.OEFixedBoolGrid___getitem__(self, el)


    def GetValues(self) -> "PyObject *":
        """GetValues(OEFixedBoolGrid self) -> PyObject *"""
        return _oechem.OEFixedBoolGrid_GetValues(self)


    def __iter__(self) -> "PyObject *":
        """__iter__(OEFixedBoolGrid self) -> PyObject *"""
        return _oechem.OEFixedBoolGrid___iter__(self)


    def SetValue(self, *args) -> "void":
        """
        SetValue(OEFixedBoolGrid self, unsigned int el, bool value)
        SetValue(OEFixedBoolGrid self, unsigned int ix, unsigned int iy, unsigned int iz, bool value)
        SetValue(OEFixedBoolGrid self, float x, float y, float z, bool value)
        """
        return _oechem.OEFixedBoolGrid_SetValue(self, *args)


    def __setitem__(self, el: 'unsigned int', value: 'bool') -> "void":
        """__setitem__(OEFixedBoolGrid self, unsigned int el, bool value)"""
        return _oechem.OEFixedBoolGrid___setitem__(self, el, value)


    def SetValues(self, *args) -> "PyObject *":
        """
        SetValues(OEFixedBoolGrid self, bool const * dataptr, unsigned int length) -> PyObject
        SetValues(OEFixedBoolGrid self, PyObject * list) -> PyObject *
        """
        return _oechem.OEFixedBoolGrid_SetValues(self, *args)


    def CheckValues(self, list: 'PyObject *') -> "PyObject *":
        """CheckValues(OEFixedBoolGrid self, PyObject * list) -> PyObject *"""
        return _oechem.OEFixedBoolGrid_CheckValues(self, list)

    __swig_destroy__ = _oechem.delete_OEFixedBoolGrid
    __del__ = lambda self: None
OEFixedBoolGrid_swigregister = _oechem.OEFixedBoolGrid_swigregister
OEFixedBoolGrid_swigregister(OEFixedBoolGrid)

class OEDoubleGrid(OEFixedDoubleGrid):
    """Proxy of C++ OESystem::OEGrid<(double)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEDoubleGrid self)"""
        return _oechem.OEDoubleGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEDoubleGrid self) -> OEBase"""
        return _oechem.OEDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEDoubleGrid self) -> void const *"""
        return _oechem.OEDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEDoubleGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEDoubleGrid self, float spacing) -> bool"""
        return _oechem.OEDoubleGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEDoubleGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEDoubleGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEDoubleGrid self, float x) -> bool"""
        return _oechem.OEDoubleGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEDoubleGrid self, float y) -> bool"""
        return _oechem.OEDoubleGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEDoubleGrid self, float z) -> bool"""
        return _oechem.OEDoubleGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEDoubleGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEDoubleGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEDoubleGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEDoubleGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEDoubleGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEDoubleGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEDoubleGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEDoubleGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'double *') -> "bool":
        """SetAll(OEDoubleGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, double * dataptr) -> bool"""
        return _oechem.OEDoubleGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(double)> self) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, OEDoubleGrid rhs) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, OEFixedDoubleGrid rhs) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, float const [6] minmax, float spacing, char const * title) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, float const [6] minmax, float spacing) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, double const [6] minmax, double spacing, char const * title) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, double const [6] minmax, double spacing) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, double * dataptr=None) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEDoubleGrid
        __init__(OESystem::OEGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEDoubleGrid
        """
        this = _oechem.new_OEDoubleGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEDoubleGrid
    __del__ = lambda self: None
OEDoubleGrid_swigregister = _oechem.OEDoubleGrid_swigregister
OEDoubleGrid_swigregister(OEDoubleGrid)

class OEFloatGrid(OEFixedFloatGrid):
    """Proxy of C++ OESystem::OEGrid<(float)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEFloatGrid self)"""
        return _oechem.OEFloatGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFloatGrid self) -> OEBase"""
        return _oechem.OEFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFloatGrid self) -> void const *"""
        return _oechem.OEFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFloatGrid self, void const * type) -> bool"""
        return _oechem.OEFloatGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEFloatGrid self, float spacing) -> bool"""
        return _oechem.OEFloatGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEFloatGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEFloatGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEFloatGrid self, float x) -> bool"""
        return _oechem.OEFloatGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEFloatGrid self, float y) -> bool"""
        return _oechem.OEFloatGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEFloatGrid self, float z) -> bool"""
        return _oechem.OEFloatGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEFloatGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEFloatGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEFloatGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEFloatGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEFloatGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEFloatGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEFloatGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEFloatGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'float *') -> "bool":
        """SetAll(OEFloatGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, float * dataptr) -> bool"""
        return _oechem.OEFloatGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(float)> self) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, OEFloatGrid rhs) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, OEFixedFloatGrid rhs) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, float const [6] minmax, float spacing, char const * title) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, float const [6] minmax, float spacing) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, double const [6] minmax, double spacing, char const * title) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, double const [6] minmax, double spacing) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, float * dataptr=None) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEFloatGrid
        __init__(OESystem::OEGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEFloatGrid
        """
        this = _oechem.new_OEFloatGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFloatGrid
    __del__ = lambda self: None
OEFloatGrid_swigregister = _oechem.OEFloatGrid_swigregister
OEFloatGrid_swigregister(OEFloatGrid)

class OEIntGrid(OEFixedIntGrid):
    """Proxy of C++ OESystem::OEGrid<(int)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEIntGrid self)"""
        return _oechem.OEIntGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEIntGrid self) -> OEBase"""
        return _oechem.OEIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEIntGrid self) -> void const *"""
        return _oechem.OEIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEIntGrid self, void const * type) -> bool"""
        return _oechem.OEIntGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEIntGrid self, float spacing) -> bool"""
        return _oechem.OEIntGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEIntGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEIntGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEIntGrid self, float x) -> bool"""
        return _oechem.OEIntGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEIntGrid self, float y) -> bool"""
        return _oechem.OEIntGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEIntGrid self, float z) -> bool"""
        return _oechem.OEIntGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEIntGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEIntGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEIntGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEIntGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEIntGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEIntGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEIntGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEIntGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'int *') -> "bool":
        """SetAll(OEIntGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, int * dataptr) -> bool"""
        return _oechem.OEIntGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(int)> self) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, OEIntGrid rhs) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, OEFixedIntGrid rhs) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, float const [6] minmax, float spacing, char const * title) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, float const [6] minmax, float spacing) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, double const [6] minmax, double spacing, char const * title) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, double const [6] minmax, double spacing) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, int * dataptr=None) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEIntGrid
        __init__(OESystem::OEGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEIntGrid
        """
        this = _oechem.new_OEIntGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIntGrid
    __del__ = lambda self: None
OEIntGrid_swigregister = _oechem.OEIntGrid_swigregister
OEIntGrid_swigregister(OEIntGrid)

class OEBoolGrid(OEFixedBoolGrid):
    """Proxy of C++ OESystem::OEGrid<(bool)> class."""

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

    def Clear(self) -> "void":
        """Clear(OEBoolGrid self)"""
        return _oechem.OEBoolGrid_Clear(self)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEBoolGrid self) -> OEBase"""
        return _oechem.OEBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEBoolGrid self) -> void const *"""
        return _oechem.OEBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEBoolGrid self, void const * type) -> bool"""
        return _oechem.OEBoolGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEBoolGrid self, float spacing) -> bool"""
        return _oechem.OEBoolGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEBoolGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEBoolGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEBoolGrid self, float x) -> bool"""
        return _oechem.OEBoolGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEBoolGrid self, float y) -> bool"""
        return _oechem.OEBoolGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEBoolGrid self, float z) -> bool"""
        return _oechem.OEBoolGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEBoolGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEBoolGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEBoolGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEBoolGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEBoolGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEBoolGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEBoolGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEBoolGrid_SetZDim(self, izdim)


    def SetAll(self, xdim: 'unsigned int', ydim: 'unsigned int', zdim: 'unsigned int', midx: 'float', midy: 'float', midz: 'float', spacing: 'float', title: 'std::string', dataptr: 'bool *') -> "bool":
        """SetAll(OEBoolGrid self, unsigned int xdim, unsigned int ydim, unsigned int zdim, float midx, float midy, float midz, float spacing, std::string title, bool * dataptr) -> bool"""
        return _oechem.OEBoolGrid_SetAll(self, xdim, ydim, zdim, midx, midy, midz, spacing, title, dataptr)


    def __init__(self, *args):
        """
        __init__(OESystem::OEGrid<(bool)> self) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, OEBoolGrid rhs) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, OEFixedBoolGrid rhs) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, float const [6] minmax, float spacing, char const * title) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, float const [6] minmax, float spacing) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, double const [6] minmax, double spacing, char const * title) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, double const [6] minmax, double spacing) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title, bool * dataptr=None) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, std::string title) -> OEBoolGrid
        __init__(OESystem::OEGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing) -> OEBoolGrid
        """
        this = _oechem.new_OEBoolGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBoolGrid
    __del__ = lambda self: None
OEBoolGrid_swigregister = _oechem.OEBoolGrid_swigregister
OEBoolGrid_swigregister(OEBoolGrid)

class OEFixedMultiDoubleGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(double)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiDoubleGrid self) -> OEBase"""
        return _oechem.OEFixedMultiDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiDoubleGrid self) -> void const *"""
        return _oechem.OEFixedMultiDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiDoubleGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiDoubleGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiDoubleGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiDoubleGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiDoubleGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiDoubleGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< double > &":
        """__getitem__(OEFixedMultiDoubleGrid self, unsigned int igrid) -> OEFixedDoubleGrid"""
        return _oechem.OEFixedMultiDoubleGrid___getitem__(self, igrid)

OEFixedMultiDoubleGrid_swigregister = _oechem.OEFixedMultiDoubleGrid_swigregister
OEFixedMultiDoubleGrid_swigregister(OEFixedMultiDoubleGrid)

class OEFixedMultiFloatGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(float)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiFloatGrid self) -> OEBase"""
        return _oechem.OEFixedMultiFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiFloatGrid self) -> void const *"""
        return _oechem.OEFixedMultiFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiFloatGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiFloatGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiFloatGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiFloatGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiFloatGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiFloatGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiFloatGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< float > &":
        """__getitem__(OEFixedMultiFloatGrid self, unsigned int igrid) -> OEFixedFloatGrid"""
        return _oechem.OEFixedMultiFloatGrid___getitem__(self, igrid)

OEFixedMultiFloatGrid_swigregister = _oechem.OEFixedMultiFloatGrid_swigregister
OEFixedMultiFloatGrid_swigregister(OEFixedMultiFloatGrid)

class OEFixedMultiIntGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(int)> 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")
    __repr__ = _swig_repr

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiIntGrid self) -> OEBase"""
        return _oechem.OEFixedMultiIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiIntGrid self) -> void const *"""
        return _oechem.OEFixedMultiIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiIntGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiIntGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiIntGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiIntGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiIntGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiIntGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiIntGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< int > &":
        """__getitem__(OEFixedMultiIntGrid self, unsigned int igrid) -> OEFixedIntGrid"""
        return _oechem.OEFixedMultiIntGrid___getitem__(self, igrid)

OEFixedMultiIntGrid_swigregister = _oechem.OEFixedMultiIntGrid_swigregister
OEFixedMultiIntGrid_swigregister(OEFixedMultiIntGrid)

class OEFixedMultiBoolGrid(OEGridBase):
    """Proxy of C++ OESystem::OEFixedMultiGrid<(bool)> class."""

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

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFixedMultiBoolGrid self) -> OEBase"""
        return _oechem.OEFixedMultiBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFixedMultiBoolGrid self) -> void const *"""
        return _oechem.OEFixedMultiBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEFixedMultiBoolGrid self, void const * type) -> bool"""
        return _oechem.OEFixedMultiBoolGrid_IsDataType(self, type)


    def GetNumGrids(self) -> "unsigned int":
        """GetNumGrids(OEFixedMultiBoolGrid self) -> unsigned int"""
        return _oechem.OEFixedMultiBoolGrid_GetNumGrids(self)


    def SetNumGrids(self, n: 'unsigned int') -> "bool":
        """SetNumGrids(OEFixedMultiBoolGrid self, unsigned int n) -> bool"""
        return _oechem.OEFixedMultiBoolGrid_SetNumGrids(self, n)

    __swig_destroy__ = _oechem.delete_OEFixedMultiBoolGrid
    __del__ = lambda self: None

    def __getitem__(self, igrid: 'unsigned int') -> "OESystem::OEFixedGrid< bool > &":
        """__getitem__(OEFixedMultiBoolGrid self, unsigned int igrid) -> OEFixedBoolGrid"""
        return _oechem.OEFixedMultiBoolGrid___getitem__(self, igrid)

OEFixedMultiBoolGrid_swigregister = _oechem.OEFixedMultiBoolGrid_swigregister
OEFixedMultiBoolGrid_swigregister(OEFixedMultiBoolGrid)

class OEMultiDoubleGrid(OEFixedMultiDoubleGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(double)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiDoubleGrid self) -> OEBase"""
        return _oechem.OEMultiDoubleGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiDoubleGrid self) -> void const *"""
        return _oechem.OEMultiDoubleGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiDoubleGrid self, void const * type) -> bool"""
        return _oechem.OEMultiDoubleGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiDoubleGrid self, float spacing) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiDoubleGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiDoubleGrid self, float x) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiDoubleGrid self, float y) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiDoubleGrid self, float z) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiDoubleGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiDoubleGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiDoubleGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiDoubleGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiDoubleGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiDoubleGrid self)"""
        return _oechem.OEMultiDoubleGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(double)> self) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, double * dataptr) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, OEMultiDoubleGrid rhs) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, OEFixedMultiDoubleGrid rhs) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiDoubleGrid
        __init__(OESystem::OEMultiGrid<(double)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiDoubleGrid
        """
        this = _oechem.new_OEMultiDoubleGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiDoubleGrid
    __del__ = lambda self: None
OEMultiDoubleGrid_swigregister = _oechem.OEMultiDoubleGrid_swigregister
OEMultiDoubleGrid_swigregister(OEMultiDoubleGrid)

class OEMultiFloatGrid(OEFixedMultiFloatGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(float)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiFloatGrid self) -> OEBase"""
        return _oechem.OEMultiFloatGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiFloatGrid self) -> void const *"""
        return _oechem.OEMultiFloatGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiFloatGrid self, void const * type) -> bool"""
        return _oechem.OEMultiFloatGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiFloatGrid self, float spacing) -> bool"""
        return _oechem.OEMultiFloatGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiFloatGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiFloatGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiFloatGrid self, float x) -> bool"""
        return _oechem.OEMultiFloatGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiFloatGrid self, float y) -> bool"""
        return _oechem.OEMultiFloatGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiFloatGrid self, float z) -> bool"""
        return _oechem.OEMultiFloatGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiFloatGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiFloatGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiFloatGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiFloatGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiFloatGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiFloatGrid self)"""
        return _oechem.OEMultiFloatGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(float)> self) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, float * dataptr) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, OEMultiFloatGrid rhs) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, OEFixedMultiFloatGrid rhs) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiFloatGrid
        __init__(OESystem::OEMultiGrid<(float)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiFloatGrid
        """
        this = _oechem.new_OEMultiFloatGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiFloatGrid
    __del__ = lambda self: None
OEMultiFloatGrid_swigregister = _oechem.OEMultiFloatGrid_swigregister
OEMultiFloatGrid_swigregister(OEMultiFloatGrid)

class OEMultiIntGrid(OEFixedMultiIntGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(int)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiIntGrid self) -> OEBase"""
        return _oechem.OEMultiIntGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiIntGrid self) -> void const *"""
        return _oechem.OEMultiIntGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiIntGrid self, void const * type) -> bool"""
        return _oechem.OEMultiIntGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiIntGrid self, float spacing) -> bool"""
        return _oechem.OEMultiIntGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiIntGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiIntGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiIntGrid self, float x) -> bool"""
        return _oechem.OEMultiIntGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiIntGrid self, float y) -> bool"""
        return _oechem.OEMultiIntGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiIntGrid self, float z) -> bool"""
        return _oechem.OEMultiIntGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiIntGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiIntGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiIntGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiIntGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiIntGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiIntGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiIntGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiIntGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiIntGrid self)"""
        return _oechem.OEMultiIntGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(int)> self) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, int * dataptr) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, OEMultiIntGrid rhs) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, OEFixedMultiIntGrid rhs) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiIntGrid
        __init__(OESystem::OEMultiGrid<(int)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiIntGrid
        """
        this = _oechem.new_OEMultiIntGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiIntGrid
    __del__ = lambda self: None
OEMultiIntGrid_swigregister = _oechem.OEMultiIntGrid_swigregister
OEMultiIntGrid_swigregister(OEMultiIntGrid)

class OEMultiBoolGrid(OEFixedMultiBoolGrid):
    """Proxy of C++ OESystem::OEMultiGrid<(bool)> class."""

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

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEMultiBoolGrid self) -> OEBase"""
        return _oechem.OEMultiBoolGrid_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEMultiBoolGrid self) -> void const *"""
        return _oechem.OEMultiBoolGrid_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEMultiBoolGrid self, void const * type) -> bool"""
        return _oechem.OEMultiBoolGrid_IsDataType(self, type)


    def SetSpacing(self, spacing: 'float') -> "bool":
        """SetSpacing(OEMultiBoolGrid self, float spacing) -> bool"""
        return _oechem.OEMultiBoolGrid_SetSpacing(self, spacing)


    def SetMid(self, x: 'float', y: 'float', z: 'float') -> "bool":
        """SetMid(OEMultiBoolGrid self, float x, float y, float z) -> bool"""
        return _oechem.OEMultiBoolGrid_SetMid(self, x, y, z)


    def SetXMid(self, x: 'float') -> "bool":
        """SetXMid(OEMultiBoolGrid self, float x) -> bool"""
        return _oechem.OEMultiBoolGrid_SetXMid(self, x)


    def SetYMid(self, y: 'float') -> "bool":
        """SetYMid(OEMultiBoolGrid self, float y) -> bool"""
        return _oechem.OEMultiBoolGrid_SetYMid(self, y)


    def SetZMid(self, z: 'float') -> "bool":
        """SetZMid(OEMultiBoolGrid self, float z) -> bool"""
        return _oechem.OEMultiBoolGrid_SetZMid(self, z)


    def SetDim(self, ixdim: 'unsigned int', iydim: 'unsigned int', izdim: 'unsigned int') -> "bool":
        """SetDim(OEMultiBoolGrid self, unsigned int ixdim, unsigned int iydim, unsigned int izdim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetDim(self, ixdim, iydim, izdim)


    def SetXDim(self, ixdim: 'unsigned int') -> "bool":
        """SetXDim(OEMultiBoolGrid self, unsigned int ixdim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetXDim(self, ixdim)


    def SetYDim(self, iydim: 'unsigned int') -> "bool":
        """SetYDim(OEMultiBoolGrid self, unsigned int iydim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetYDim(self, iydim)


    def SetZDim(self, izdim: 'unsigned int') -> "bool":
        """SetZDim(OEMultiBoolGrid self, unsigned int izdim) -> bool"""
        return _oechem.OEMultiBoolGrid_SetZDim(self, izdim)


    def Clear(self) -> "void":
        """Clear(OEMultiBoolGrid self)"""
        return _oechem.OEMultiBoolGrid_Clear(self)


    def __init__(self, *args):
        """
        __init__(OESystem::OEMultiGrid<(bool)> self) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, int xdim, int ydim, int zdim, float midx, float midy, float midz, float spacing, int ngrids, std::string title, bool * dataptr) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, OEMultiBoolGrid rhs) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, OEFixedMultiBoolGrid rhs) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, float const [6] minmax, float spacing, int ngrids, char const * title) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, float const [6] minmax, float spacing, int ngrids) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, double const [6] minmax, double spacing, int ngrids, char const * title) -> OEMultiBoolGrid
        __init__(OESystem::OEMultiGrid<(bool)> self, double const [6] minmax, double spacing, int ngrids) -> OEMultiBoolGrid
        """
        this = _oechem.new_OEMultiBoolGrid(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMultiBoolGrid
    __del__ = lambda self: None
OEMultiBoolGrid_swigregister = _oechem.OEMultiBoolGrid_swigregister
OEMultiBoolGrid_swigregister(OEMultiBoolGrid)


def OEReadOldStyleGrid(istr: 'oeistream', grid: 'OEMultiFloatGrid') -> "bool":
    """OEReadOldStyleGrid(oeistream istr, OEMultiFloatGrid grid) -> bool"""
    return _oechem.OEReadOldStyleGrid(istr, grid)

def OEWriteOldStyleGrid(*args) -> "bool":
    """
    OEWriteOldStyleGrid(oeostream ostr, OEFixedMultiFloatGrid grid, unsigned int cur_grid=0) -> bool
    OEWriteOldStyleGrid(oeostream ostr, OEFixedMultiFloatGrid grid) -> bool
    OEWriteOldStyleGrid(oeostream ostr, OEFixedFloatGrid grid) -> bool
    """
    return _oechem.OEWriteOldStyleGrid(*args)

def OELinearInterpolate(grid: 'OEFixedFloatGrid', x: 'float', y: 'float', z: 'float', outside_grid_val: 'float const &') -> "float":
    """OELinearInterpolate(OEFixedFloatGrid grid, float x, float y, float z, float const & outside_grid_val) -> float"""
    return _oechem.OELinearInterpolate(grid, x, y, z, outside_grid_val)

def OEZeroGridBoundary(grid: 'OEFixedFloatGrid') -> "bool":
    """OEZeroGridBoundary(OEFixedFloatGrid grid) -> bool"""
    return _oechem.OEZeroGridBoundary(grid)

def OEGetCenterAndExtents(*args) -> "void":
    """
    OEGetCenterAndExtents(OEMolBase mol, float * center, float * extents)
    OEGetCenterAndExtents(OEGridBase grid, float * center, float * extents)
    """
    return _oechem.OEGetCenterAndExtents(*args)
class OEParameter(object):
    """Proxy of C++ OESystem::OEParameter 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 IsSet(self, idx: 'unsigned int'=0) -> "bool":
        """
        IsSet(OEParameter self, unsigned int idx=0) -> bool
        IsSet(OEParameter self) -> bool
        """
        return _oechem.OEParameter_IsSet(self, idx)


    def SetName(self, name: 'std::string') -> "bool":
        """SetName(OEParameter self, std::string name) -> bool"""
        return _oechem.OEParameter_SetName(self, name)


    def SetBrief(self, brief: 'std::string') -> "bool":
        """SetBrief(OEParameter self, std::string brief) -> bool"""
        return _oechem.OEParameter_SetBrief(self, brief)


    def SetStringValue(self, string_value: 'std::string') -> "bool":
        """SetStringValue(OEParameter self, std::string string_value) -> bool"""
        return _oechem.OEParameter_SetStringValue(self, string_value)


    def SetStringDefault(self, string_default: 'std::string') -> "bool":
        """SetStringDefault(OEParameter self, std::string string_default) -> bool"""
        return _oechem.OEParameter_SetStringDefault(self, string_default)


    def AddStringValue(self, string_value: 'std::string') -> "bool":
        """AddStringValue(OEParameter self, std::string string_value) -> bool"""
        return _oechem.OEParameter_AddStringValue(self, string_value)


    def AddStringDefault(self, string_default: 'std::string') -> "bool":
        """AddStringDefault(OEParameter self, std::string string_default) -> bool"""
        return _oechem.OEParameter_AddStringDefault(self, string_default)


    def SetRequired(self, required: 'bool') -> "bool":
        """SetRequired(OEParameter self, bool required) -> bool"""
        return _oechem.OEParameter_SetRequired(self, required)


    def SetKeyless(self, keyless: 'unsigned int') -> "bool":
        """SetKeyless(OEParameter self, unsigned int keyless) -> bool"""
        return _oechem.OEParameter_SetKeyless(self, keyless)


    def SetVisibility(self, visibility: 'unsigned int') -> "bool":
        """SetVisibility(OEParameter self, unsigned int visibility) -> bool"""
        return _oechem.OEParameter_SetVisibility(self, visibility)


    def SetOrderPriority(self, order: 'int') -> "bool":
        """SetOrderPriority(OEParameter self, int order) -> bool"""
        return _oechem.OEParameter_SetOrderPriority(self, order)


    def SetInput(self, chunksize: 'unsigned int') -> "bool":
        """SetInput(OEParameter self, unsigned int chunksize) -> bool"""
        return _oechem.OEParameter_SetInput(self, chunksize)


    def SetOutput(self, is_output: 'bool') -> "bool":
        """SetOutput(OEParameter self, bool is_output) -> bool"""
        return _oechem.OEParameter_SetOutput(self, is_output)


    def AddDetail(self, detail: 'std::string const &') -> "bool":
        """AddDetail(OEParameter self, std::string const & detail) -> bool"""
        return _oechem.OEParameter_AddDetail(self, detail)


    def AddAlias(self, alias: 'std::string') -> "bool":
        """AddAlias(OEParameter self, std::string alias) -> bool"""
        return _oechem.OEParameter_AddAlias(self, alias)


    def AddLegalValue(self, val: 'std::string') -> "bool":
        """AddLegalValue(OEParameter self, std::string val) -> bool"""
        return _oechem.OEParameter_AddLegalValue(self, val)


    def AddIllegalValue(self, val: 'std::string') -> "bool":
        """AddIllegalValue(OEParameter self, std::string val) -> bool"""
        return _oechem.OEParameter_AddIllegalValue(self, val)


    def AddLegalRange(self, hi_val: 'std::string', low_val: 'std::string') -> "bool":
        """AddLegalRange(OEParameter self, std::string hi_val, std::string low_val) -> bool"""
        return _oechem.OEParameter_AddLegalRange(self, hi_val, low_val)


    def AddIllegalRange(self, hi_val: 'std::string', low_val: 'std::string') -> "bool":
        """AddIllegalRange(OEParameter self, std::string hi_val, std::string low_val) -> bool"""
        return _oechem.OEParameter_AddIllegalRange(self, hi_val, low_val)


    def SetElement(self, el: 'std::string const &') -> "bool":
        """SetElement(OEParameter self, std::string const & el) -> bool"""
        return _oechem.OEParameter_SetElement(self, el)


    def SetCommand(self, cmd: 'std::string const &') -> "bool":
        """SetCommand(OEParameter self, std::string const & cmd) -> bool"""
        return _oechem.OEParameter_SetCommand(self, cmd)


    def SetIsList(self, is_list_parameter: 'bool') -> "bool":
        """SetIsList(OEParameter self, bool is_list_parameter) -> bool"""
        return _oechem.OEParameter_SetIsList(self, is_list_parameter)


    def ClearValues(self) -> "bool":
        """ClearValues(OEParameter self) -> bool"""
        return _oechem.OEParameter_ClearValues(self)


    def ClearDefaults(self) -> "bool":
        """ClearDefaults(OEParameter self) -> bool"""
        return _oechem.OEParameter_ClearDefaults(self)


    def GetName(self) -> "std::string":
        """GetName(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetName(self)


    def GetBrief(self) -> "std::string":
        """GetBrief(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetBrief(self)


    def GetStringValue(self, arg2: 'unsigned int'=0) -> "std::string":
        """
        GetStringValue(OEParameter self, unsigned int arg2=0) -> std::string
        GetStringValue(OEParameter self) -> std::string
        """
        return _oechem.OEParameter_GetStringValue(self, arg2)


    def GetStringDefault(self, arg2: 'unsigned int'=0) -> "std::string":
        """
        GetStringDefault(OEParameter self, unsigned int arg2=0) -> std::string
        GetStringDefault(OEParameter self) -> std::string
        """
        return _oechem.OEParameter_GetStringDefault(self, arg2)


    def GetStringValues(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetStringValues(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetStringValues(self)


    def GetStringDefaults(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetStringDefaults(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetStringDefaults(self)


    def GetHasValue(self, arg2: 'unsigned int'=0) -> "bool":
        """
        GetHasValue(OEParameter self, unsigned int arg2=0) -> bool
        GetHasValue(OEParameter self) -> bool
        """
        return _oechem.OEParameter_GetHasValue(self, arg2)


    def GetHasDefault(self, arg2: 'unsigned int'=0) -> "bool":
        """
        GetHasDefault(OEParameter self, unsigned int arg2=0) -> bool
        GetHasDefault(OEParameter self) -> bool
        """
        return _oechem.OEParameter_GetHasDefault(self, arg2)


    def GetRequired(self) -> "bool":
        """GetRequired(OEParameter self) -> bool"""
        return _oechem.OEParameter_GetRequired(self)


    def GetKeyless(self) -> "unsigned int":
        """GetKeyless(OEParameter self) -> unsigned int"""
        return _oechem.OEParameter_GetKeyless(self)


    def GetVisibility(self) -> "unsigned int":
        """GetVisibility(OEParameter self) -> unsigned int"""
        return _oechem.OEParameter_GetVisibility(self)


    def GetInput(self) -> "unsigned int":
        """GetInput(OEParameter self) -> unsigned int"""
        return _oechem.OEParameter_GetInput(self)


    def GetOutput(self) -> "bool":
        """GetOutput(OEParameter self) -> bool"""
        return _oechem.OEParameter_GetOutput(self)


    def GetOrderPriority(self) -> "int":
        """GetOrderPriority(OEParameter self) -> int"""
        return _oechem.OEParameter_GetOrderPriority(self)


    def GetDetail(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetDetail(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetDetail(self)


    def GetAliases(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetAliases(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetAliases(self)


    def GetLegalValues(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetLegalValues(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetLegalValues(self)


    def GetIllegalValues(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetIllegalValues(OEParameter self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEParameter_GetIllegalValues(self)


    def GetLegalRanges(self) -> "OESystem::OEIterBase< std::pair< std::string,std::string > const > *":
        """GetLegalRanges(OEParameter self) -> OESystem::OEIterBase< std::pair< std::string,std::string > const > *"""
        return _oechem.OEParameter_GetLegalRanges(self)


    def GetIllegalRanges(self) -> "OESystem::OEIterBase< std::pair< std::string,std::string > const > *":
        """GetIllegalRanges(OEParameter self) -> OESystem::OEIterBase< std::pair< std::string,std::string > const > *"""
        return _oechem.OEParameter_GetIllegalRanges(self)


    def GetElement(self) -> "std::string":
        """GetElement(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetElement(self)


    def GetCommand(self) -> "std::string":
        """GetCommand(OEParameter self) -> std::string"""
        return _oechem.OEParameter_GetCommand(self)


    def GetIsList(self) -> "bool":
        """GetIsList(OEParameter self) -> bool"""
        return _oechem.OEParameter_GetIsList(self)


    def Load(self) -> "bool":
        """Load(OEParameter self) -> bool"""
        return _oechem.OEParameter_Load(self)


    def LoadValue(self) -> "bool":
        """LoadValue(OEParameter self) -> bool"""
        return _oechem.OEParameter_LoadValue(self)


    def LoadDefault(self) -> "bool":
        """LoadDefault(OEParameter self) -> bool"""
        return _oechem.OEParameter_LoadDefault(self)


    def IsLegalString(self, value: 'std::string') -> "bool":
        """IsLegalString(OEParameter self, std::string value) -> bool"""
        return _oechem.OEParameter_IsLegalString(self, value)


    def IsSetToString(self, val: 'std::string') -> "bool":
        """IsSetToString(OEParameter self, std::string val) -> bool"""
        return _oechem.OEParameter_IsSetToString(self, val)


    def TypedParameterTypeID(self) -> "void const *":
        """TypedParameterTypeID(OEParameter self) -> void const *"""
        return _oechem.OEParameter_TypedParameterTypeID(self)


    def ClassID(self) -> "std::string":
        """ClassID(OEParameter self) -> std::string"""
        return _oechem.OEParameter_ClassID(self)


    def WriteValueAndDefaultBinary(self, arg2: 'unsigned char *') -> "size_t":
        """WriteValueAndDefaultBinary(OEParameter self, unsigned char * arg2) -> size_t"""
        return _oechem.OEParameter_WriteValueAndDefaultBinary(self, arg2)


    def ReadValueAndDefaultBinary(self, arg2: 'unsigned char const *') -> "size_t":
        """ReadValueAndDefaultBinary(OEParameter self, unsigned char const * arg2) -> size_t"""
        return _oechem.OEParameter_ReadValueAndDefaultBinary(self, arg2)


    def ValueAndDefaultBinarySize(self) -> "size_t":
        """ValueAndDefaultBinarySize(OEParameter self) -> size_t"""
        return _oechem.OEParameter_ValueAndDefaultBinarySize(self)


    def CreateCopy(self) -> "OESystem::OEParameter *":
        """CreateCopy(OEParameter self) -> OEParameter"""
        return _oechem.OEParameter_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEParameter
    __del__ = lambda self: None
OEParameter_swigregister = _oechem.OEParameter_swigregister
OEParameter_swigregister(OEParameter)


def OERegisterMolParameters() -> "bool":
    """OERegisterMolParameters() -> bool"""
    return _oechem.OERegisterMolParameters()

def GetArgVFromPythonSequence(argv: 'std::vector< char * > &', input: 'PyObject *') -> "bool":
    """GetArgVFromPythonSequence(std::vector< char * > & argv, PyObject * input) -> bool"""
    return _oechem.GetArgVFromPythonSequence(argv, input)
class OEInterface(object):
    """Proxy of C++ OESystem::OEInterface class."""

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

    def Factory() -> "OESimpleFactory< std::string,OESystem::OEParameter > &":
        """Factory() -> OESimpleFactory< std::string,OESystem::OEParameter > &"""
        return _oechem.OEInterface_Factory()

    Factory = staticmethod(Factory)

    def SetOrderPriority(self, priority: 'int') -> "bool":
        """SetOrderPriority(OEInterface self, int priority) -> bool"""
        return _oechem.OEInterface_SetOrderPriority(self, priority)


    def SetName(self, name: 'std::string') -> "bool":
        """SetName(OEInterface self, std::string name) -> bool"""
        return _oechem.OEInterface_SetName(self, name)


    def SetBrief(self, brief: 'std::string') -> "bool":
        """SetBrief(OEInterface self, std::string brief) -> bool"""
        return _oechem.OEInterface_SetBrief(self, brief)


    def AddDetail(self, detail: 'std::string const &') -> "bool":
        """AddDetail(OEInterface self, std::string const & detail) -> bool"""
        return _oechem.OEInterface_AddDetail(self, detail)


    def GetOrderPriority(self) -> "int":
        """GetOrderPriority(OEInterface self) -> int"""
        return _oechem.OEInterface_GetOrderPriority(self)


    def GetName(self) -> "std::string":
        """GetName(OEInterface self) -> std::string"""
        return _oechem.OEInterface_GetName(self)


    def GetBrief(self) -> "std::string":
        """GetBrief(OEInterface self) -> std::string"""
        return _oechem.OEInterface_GetBrief(self)


    def GetDetail(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetDetail(OEInterface self) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEInterface_GetDetail(self)


    def AddParameter(self, classid: 'std::string') -> "OESystem::OEParameter *":
        """AddParameter(OEInterface self, std::string classid) -> OEParameter"""
        return _oechem.OEInterface_AddParameter(self, classid)


    def DeleteParameter(self, param: 'OEParameter') -> "bool":
        """DeleteParameter(OEInterface self, OEParameter param) -> bool"""
        return _oechem.OEInterface_DeleteParameter(self, param)


    def GetParameter(self, *args) -> "OESystem::OEParameter const *":
        """
        GetParameter(OEInterface self, std::string name) -> OEParameter
        GetParameter(OEInterface self, std::string name) -> OEParameter
        """
        return _oechem.OEInterface_GetParameter(self, *args)


    def GetParameters(self, *args) -> "OESystem::OEIterBase< OESystem::OEParameter const > *":
        """
        GetParameters(OEInterface self, bool recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEInterface self) -> OESystem::OEIterBase< OESystem::OEParameter >
        GetParameters(OEInterface self, bool recursive=True) -> OESystem::OEIterBase< OESystem::OEParameter const >
        GetParameters(OEInterface self) -> OESystem::OEIterBase< OESystem::OEParameter const > *
        """
        return _oechem.OEInterface_GetParameters(self, *args)


    def AddInterface(self) -> "OESystem::OEInterface *":
        """AddInterface(OEInterface self) -> OEInterface"""
        return _oechem.OEInterface_AddInterface(self)


    def DeleteInterface(self, itf: 'OEInterface') -> "bool":
        """DeleteInterface(OEInterface self, OEInterface itf) -> bool"""
        return _oechem.OEInterface_DeleteInterface(self, itf)


    def GetInterface(self, *args) -> "OESystem::OEInterface const *":
        """
        GetInterface(OEInterface self, std::string name) -> OEInterface
        GetInterface(OEInterface self, std::string name) -> OEInterface
        """
        return _oechem.OEInterface_GetInterface(self, *args)


    def GetInterfaces(self, *args) -> "OESystem::OEIterBase< OESystem::OEInterface const > *":
        """
        GetInterfaces(OEInterface self, bool recursive=False) -> OESystem::OEIterBase< OESystem::OEInterface >
        GetInterfaces(OEInterface self) -> OESystem::OEIterBase< OESystem::OEInterface >
        GetInterfaces(OEInterface self, bool recursive=False) -> OESystem::OEIterBase< OESystem::OEInterface const >
        GetInterfaces(OEInterface self) -> OESystem::OEIterBase< OESystem::OEInterface const > *
        """
        return _oechem.OEInterface_GetInterfaces(self, *args)


    def Parent(self, *args) -> "OESystem::OEInterface *":
        """
        Parent(OEInterface self) -> OEInterface
        Parent(OEInterface self) -> OEInterface
        """
        return _oechem.OEInterface_Parent(self, *args)


    def Clear(self) -> "bool":
        """Clear(OEInterface self) -> bool"""
        return _oechem.OEInterface_Clear(self)

    __swig_destroy__ = _oechem.delete_OEInterface
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OESystem::OEInterface self) -> OEInterface
        __init__(OESystem::OEInterface self, OEInterface arg2) -> OEInterface
        __init__(OESystem::OEInterface self, char const * dataptr, int argc, char ** argv) -> OEInterface
        __init__(OESystem::OEInterface self, char const * dataptr) -> OEInterface
        __init__(OESystem::OEInterface self, char const * dataptr, PyObject * input) -> OEInterface
        """
        this = _oechem.new_OEInterface(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def HasBool(self, name: 'char const *', ilist: 'unsigned int'=0) -> "bool":
        """
        HasBool(OEInterface self, char const * name, unsigned int ilist=0) -> bool
        HasBool(OEInterface self, char const * name) -> bool
        """
        return _oechem.OEInterface_HasBool(self, name, ilist)


    def GetBool(self, name: 'char const *', ilist: 'unsigned int'=0) -> "bool":
        """
        GetBool(OEInterface self, char const * name, unsigned int ilist=0) -> bool
        GetBool(OEInterface self, char const * name) -> bool
        """
        return _oechem.OEInterface_GetBool(self, name, ilist)


    def GetBoolList(self, name: 'char const *') -> "OESystem::OEIterBase< bool const > *":
        """GetBoolList(OEInterface self, char const * name) -> OESystem::OEIterBase< bool const > *"""
        return _oechem.OEInterface_GetBoolList(self, name)


    def HasInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasInt(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasInt(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasInt(self, name, ilist)


    def GetInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "int":
        """
        GetInt(OEInterface self, std::string name, unsigned int ilist=0) -> int
        GetInt(OEInterface self, std::string name) -> int
        """
        return _oechem.OEInterface_GetInt(self, name, ilist)


    def GetIntList(self, name: 'std::string') -> "OESystem::OEIterBase< int const > *":
        """GetIntList(OEInterface self, std::string name) -> OESystem::OEIterBase< int const > *"""
        return _oechem.OEInterface_GetIntList(self, name)


    def HasUnsignedInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasUnsignedInt(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasUnsignedInt(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasUnsignedInt(self, name, ilist)


    def GetUnsignedInt(self, name: 'std::string', ilist: 'unsigned int'=0) -> "int":
        """
        GetUnsignedInt(OEInterface self, std::string name, unsigned int ilist=0) -> int
        GetUnsignedInt(OEInterface self, std::string name) -> int
        """
        return _oechem.OEInterface_GetUnsignedInt(self, name, ilist)


    def HasFloat(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasFloat(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasFloat(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasFloat(self, name, ilist)


    def GetFloat(self, name: 'std::string', ilist: 'unsigned int'=0) -> "float":
        """
        GetFloat(OEInterface self, std::string name, unsigned int ilist=0) -> float
        GetFloat(OEInterface self, std::string name) -> float
        """
        return _oechem.OEInterface_GetFloat(self, name, ilist)


    def GetFloatList(self, name: 'std::string') -> "OESystem::OEIterBase< float const > *":
        """GetFloatList(OEInterface self, std::string name) -> OESystem::OEIterBase< float const > *"""
        return _oechem.OEInterface_GetFloatList(self, name)


    def HasDouble(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasDouble(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasDouble(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasDouble(self, name, ilist)


    def GetDouble(self, name: 'std::string', ilist: 'unsigned int'=0) -> "double":
        """
        GetDouble(OEInterface self, std::string name, unsigned int ilist=0) -> double
        GetDouble(OEInterface self, std::string name) -> double
        """
        return _oechem.OEInterface_GetDouble(self, name, ilist)


    def GetDoubleList(self, name: 'std::string') -> "OESystem::OEIterBase< double const > *":
        """GetDoubleList(OEInterface self, std::string name) -> OESystem::OEIterBase< double const > *"""
        return _oechem.OEInterface_GetDoubleList(self, name)


    def HasString(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasString(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasString(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasString(self, name, ilist)


    def GetString(self, name: 'std::string', ilist: 'unsigned int'=0) -> "std::string":
        """
        GetString(OEInterface self, std::string name, unsigned int ilist=0) -> std::string
        GetString(OEInterface self, std::string name) -> std::string
        """
        return _oechem.OEInterface_GetString(self, name, ilist)


    def GetStringList(self, name: 'std::string') -> "OESystem::OEIterBase< std::string const > *":
        """GetStringList(OEInterface self, std::string name) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEInterface_GetStringList(self, name)


    def HasOEMol(self, name: 'std::string', ilist: 'unsigned int'=0) -> "bool":
        """
        HasOEMol(OEInterface self, std::string name, unsigned int ilist=0) -> bool
        HasOEMol(OEInterface self, std::string name) -> bool
        """
        return _oechem.OEInterface_HasOEMol(self, name, ilist)


    def GetOEMol(self, name: 'std::string', ilist: 'unsigned int'=0) -> "OEMolWrapper *":
        """
        GetOEMol(OEInterface self, std::string name, unsigned int ilist=0) -> OEMol
        GetOEMol(OEInterface self, std::string name) -> OEMol
        """
        return _oechem.OEInterface_GetOEMol(self, name, ilist)


    def HasOEGraphMol(self, name: 'std::string', ilist: 'unsigned int') -> "bool":
        """HasOEGraphMol(OEInterface self, std::string name, unsigned int ilist) -> bool"""
        return _oechem.OEInterface_HasOEGraphMol(self, name, ilist)


    def GetOEGraphMol(self, name: 'std::string', ilist: 'unsigned int'=0) -> "OEGraphMolWrapper *":
        """
        GetOEGraphMol(OEInterface self, std::string name, unsigned int ilist=0) -> OEGraphMol
        GetOEGraphMol(OEInterface self, std::string name) -> OEGraphMol
        """
        return _oechem.OEInterface_GetOEGraphMol(self, name, ilist)

OEInterface_swigregister = _oechem.OEInterface_swigregister
OEInterface_swigregister(OEInterface)

def OEInterface_Factory() -> "OESimpleFactory< std::string,OESystem::OEParameter > &":
    """OEInterface_Factory() -> OESimpleFactory< std::string,OESystem::OEParameter > &"""
    return _oechem.OEInterface_Factory()


def OEParseCommandLineLW(*args) -> "bool":
    """
    OEParseCommandLineLW(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLineLW(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLineLW(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None) -> bool
    OEParseCommandLineLW(OEInterface itf, char const * version, int argc, char ** argv) -> bool
    """
    return _oechem.OEParseCommandLineLW(*args)

def OEWriteHtml(itf: 'OEInterface', ostr: 'oeostream', program_name: 'std::string', program_version: 'std::string') -> "bool":
    """OEWriteHtml(OEInterface itf, oeostream ostr, std::string program_name, std::string program_version) -> bool"""
    return _oechem.OEWriteHtml(itf, ostr, program_name, program_version)

def OEWriteSettings(*args) -> "bool":
    """
    OEWriteSettings(OEInterface itf, oeostream ostr, bool include_default=True, std::string mode) -> bool
    OEWriteSettings(OEInterface itf, oeostream ostr, bool include_default=True) -> bool
    OEWriteSettings(OEInterface itf, oeostream ostr) -> bool
    OEWriteSettings(OEInterface itf) -> bool
    """
    return _oechem.OEWriteSettings(*args)

def OEParseParameterFile(*args) -> "bool":
    """
    OEParseParameterFile(OEInterface itf, oeistream istr, bool over_ride=True, unsigned int error_level) -> bool
    OEParseParameterFile(OEInterface itf, oeistream istr, bool over_ride=True) -> bool
    OEParseParameterFile(OEInterface itf, oeistream istr) -> bool
    """
    return _oechem.OEParseParameterFile(*args)

def OEWriteInterfaceConfigurationFile(itf: 'OEInterface', ostr: 'oeostream') -> "bool":
    """OEWriteInterfaceConfigurationFile(OEInterface itf, oeostream ostr) -> bool"""
    return _oechem.OEWriteInterfaceConfigurationFile(itf, ostr)

def OEWriteJSON(itf: 'OEInterface', ostr: 'oeostream') -> "bool":
    """OEWriteJSON(OEInterface itf, oeostream ostr) -> bool"""
    return _oechem.OEWriteJSON(itf, ostr)

def OEConfigure(*args) -> "bool":
    """
    OEConfigure(OEInterface itf, oeistream istr) -> bool
    OEConfigure(OEInterface itf, char const * itfdata) -> bool
    """
    return _oechem.OEConfigure(*args)

def OECheckHelp(*args) -> "PyObject *":
    """
    OECheckHelp(OEInterface itf, PyObject * input, bool help_for_no_args=True, oeostream ostr) -> PyObject
    OECheckHelp(OEInterface itf, PyObject * input, bool help_for_no_args=True) -> PyObject
    OECheckHelp(OEInterface itf, PyObject * input) -> PyObject *
    """
    return _oechem.OECheckHelp(*args)

def OEParseCommandLine(*args) -> "PyObject *":
    """
    OEParseCommandLine(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level, bool checkhelp=True) -> bool
    OEParseCommandLine(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLine(OEInterface itf, int argc, char ** argv, unsigned char const * requirements=None) -> bool
    OEParseCommandLine(OEInterface itf, int argc, char ** argv) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level, bool checkhelp=True) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None, unsigned int error_level) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv, unsigned char const * requirements=None) -> bool
    OEParseCommandLine(OEInterface itf, char const * version, int argc, char ** argv) -> bool
    OEParseCommandLine(OEInterface itf, PyObject * input, char const * requirements=None, unsigned int error_level) -> PyObject
    OEParseCommandLine(OEInterface itf, PyObject * input, char const * requirements=None) -> PyObject
    OEParseCommandLine(OEInterface itf, PyObject * input) -> PyObject *
    """
    return _oechem.OEParseCommandLine(*args)

def OEConfigureFromFile(itf: 'OEInterface', filename: 'std::string const &') -> "bool":
    """OEConfigureFromFile(OEInterface itf, std::string const & filename) -> bool"""
    return _oechem.OEConfigureFromFile(itf, filename)
class OEComponentTypeBase(object):
    """Proxy of C++ OEBio::OEComponentTypeBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEComponentTypeBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEComponentTypeBase *":
        """CreateCopy(OEComponentTypeBase self) -> OEComponentTypeBase"""
        return _oechem.OEComponentTypeBase_CreateCopy(self)


    def GetName(self) -> "char const *":
        """GetName(OEComponentTypeBase self) -> char const *"""
        return _oechem.OEComponentTypeBase_GetName(self)


    def __eq__(self, arg2: 'OEComponentTypeBase') -> "bool":
        """__eq__(OEComponentTypeBase self, OEComponentTypeBase arg2) -> bool"""
        return _oechem.OEComponentTypeBase___eq__(self, arg2)


    def __ne__(self, arg2: 'OEComponentTypeBase') -> "bool":
        """__ne__(OEComponentTypeBase self, OEComponentTypeBase arg2) -> bool"""
        return _oechem.OEComponentTypeBase___ne__(self, arg2)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OEComponentTypeBase self, OEMolBase arg2) -> bool"""
        return _oechem.OEComponentTypeBase_IsValid(self, arg2)


    def GetImpl(self) -> "OEBio::OEComponentTypeBaseImpl const *":
        """GetImpl(OEComponentTypeBase self) -> OEBio::OEComponentTypeBaseImpl const *"""
        return _oechem.OEComponentTypeBase_GetImpl(self)

OEComponentTypeBase_swigregister = _oechem.OEComponentTypeBase_swigregister
OEComponentTypeBase_swigregister(OEComponentTypeBase)

class OEProteinComponentType(OEComponentTypeBase):
    """Proxy of C++ OEBio::OEProteinComponentType 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__(OEBio::OEProteinComponentType self) -> OEProteinComponentType
        __init__(OEBio::OEProteinComponentType self, OEProteinComponentType rhs) -> OEProteinComponentType
        """
        this = _oechem.new_OEProteinComponentType(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEComponentTypeBase *":
        """CreateCopy(OEProteinComponentType self) -> OEComponentTypeBase"""
        return _oechem.OEProteinComponentType_CreateCopy(self)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OEProteinComponentType self, OEMolBase arg2) -> bool"""
        return _oechem.OEProteinComponentType_IsValid(self, arg2)

    __swig_destroy__ = _oechem.delete_OEProteinComponentType
    __del__ = lambda self: None
OEProteinComponentType_swigregister = _oechem.OEProteinComponentType_swigregister
OEProteinComponentType_swigregister(OEProteinComponentType)

class OELigandComponentType(OEComponentTypeBase):
    """Proxy of C++ OEBio::OELigandComponentType 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__(OEBio::OELigandComponentType self) -> OELigandComponentType
        __init__(OEBio::OELigandComponentType self, OELigandComponentType rhs) -> OELigandComponentType
        """
        this = _oechem.new_OELigandComponentType(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEComponentTypeBase *":
        """CreateCopy(OELigandComponentType self) -> OEComponentTypeBase"""
        return _oechem.OELigandComponentType_CreateCopy(self)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OELigandComponentType self, OEMolBase arg2) -> bool"""
        return _oechem.OELigandComponentType_IsValid(self, arg2)


    def GetMaxHeavyAtom(self) -> "unsigned int":
        """GetMaxHeavyAtom(OELigandComponentType self) -> unsigned int"""
        return _oechem.OELigandComponentType_GetMaxHeavyAtom(self)


    def SetMaxHeavyAtom(self, maxhvy: 'unsigned int') -> "void":
        """SetMaxHeavyAtom(OELigandComponentType self, unsigned int maxhvy)"""
        return _oechem.OELigandComponentType_SetMaxHeavyAtom(self, maxhvy)

    __swig_destroy__ = _oechem.delete_OELigandComponentType
    __del__ = lambda self: None
OELigandComponentType_swigregister = _oechem.OELigandComponentType_swigregister
OELigandComponentType_swigregister(OELigandComponentType)

class OEFragment(OEBase):
    """Proxy of C++ OEBio::OEFragment 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, rhs: 'OEFragment'):
        """__init__(OEBio::OEFragment self, OEFragment rhs) -> OEFragment"""
        this = _oechem.new_OEFragment(rhs)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFragment
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFragment self) -> OEBase"""
        return _oechem.OEFragment_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFragment self) -> void const *"""
        return _oechem.OEFragment_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEFragment self, void const * arg2) -> bool"""
        return _oechem.OEFragment_IsDataType(self, arg2)


    def AddAtom(self, arg2: 'OEAtomBase') -> "bool":
        """AddAtom(OEFragment self, OEAtomBase arg2) -> bool"""
        return _oechem.OEFragment_AddAtom(self, arg2)


    def HasAtom(self, arg2: 'OEAtomBase') -> "bool":
        """HasAtom(OEFragment self, OEAtomBase arg2) -> bool"""
        return _oechem.OEFragment_HasAtom(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEFragment self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAtoms(OEFragment self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEFragment_GetAtoms(self, *args)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEFragment self) -> unsigned int"""
        return _oechem.OEFragment_NumAtoms(self)


    def GetComponentType(self) -> "OEBio::OEComponentTypeBase const &":
        """GetComponentType(OEFragment self) -> OEComponentTypeBase"""
        return _oechem.OEFragment_GetComponentType(self)

OEFragment_swigregister = _oechem.OEFragment_swigregister
OEFragment_swigregister(OEFragment)

class OEConstAtomIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEChem::OEAtomBase)> 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::OEAtomBase)> self) -> OEConstAtomIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEAtomBase)> self, OEConstAtomIter rhs) -> OEConstAtomIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEAtomBase)> self, OESystem::OEIterBase< OEChem::OEAtomBase const > * rhs) -> OEConstAtomIter
        __init__(OESystem::OEIter<(q(const).OEChem::OEAtomBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEChem::OEAtomBase const >::NonConstA > * rhs) -> OEConstAtomIter
        """
        this = _oechem.new_OEConstAtomIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEConstAtomIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """Copy(OEConstAtomIter self) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *"""
        return _oechem.OEConstAtomIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEConstAtomIter self, OESystem::OEIterBase< OEChem::OEAtomBase const > * ib)
        Push(OEConstAtomIter self, OEConstAtomIter iter)
        """
        return _oechem.OEConstAtomIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEChem::OEAtomBase const,OEChem::OEAtomBase const > const &') -> "void":
        """Sort(OEConstAtomIter self, OESystem::OEBinaryPredicate< OEChem::OEAtomBase const,OEChem::OEAtomBase const > const & sort_criterion)"""
        return _oechem.OEConstAtomIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """ToFirst(OEConstAtomIter self) -> OEConstAtomIter"""
        return _oechem.OEConstAtomIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """ToLast(OEConstAtomIter self) -> OEConstAtomIter"""
        return _oechem.OEConstAtomIter_ToLast(self)


    def __ref__(self) -> "OEChem::OEAtomBase const &":
        """__ref__(OEConstAtomIter self) -> OEAtomBase"""
        return _oechem.OEConstAtomIter___ref__(self)


    def IsValid(self):
      return _oechem.OEConstAtomIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEConstAtomIter self) -> PyObject *"""
        return _oechem.OEConstAtomIter_next(self)


    def Target(self) -> "OEChem::OEAtomBase const &":
        """Target(OEConstAtomIter self) -> OEAtomBase"""
        return _oechem.OEConstAtomIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """
        Next(OEConstAtomIter self) -> OEConstAtomIter
        Next(OEConstAtomIter self, int i) -> OEConstAtomIter
        """
        return _oechem.OEConstAtomIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEChem::OEAtomBase const > &":
        """
        Prev(OEConstAtomIter self) -> OEConstAtomIter
        Prev(OEConstAtomIter self, int i) -> OEConstAtomIter
        """
        return _oechem.OEConstAtomIter_Prev(self, *args)

OEConstAtomIter_swigregister = _oechem.OEConstAtomIter_swigregister
OEConstAtomIter_swigregister(OEConstAtomIter)

class OEFragmentConnectionTypeBase(object):
    """Proxy of C++ OEBio::OEFragmentConnectionTypeBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEFragmentConnectionTypeBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEFragmentConnectionTypeBase *":
        """CreateCopy(OEFragmentConnectionTypeBase self) -> OEFragmentConnectionTypeBase"""
        return _oechem.OEFragmentConnectionTypeBase_CreateCopy(self)


    def GetName(self) -> "char const *":
        """GetName(OEFragmentConnectionTypeBase self) -> char const *"""
        return _oechem.OEFragmentConnectionTypeBase_GetName(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEFragmentConnectionTypeBase self, OEFragment arg2, OEFragment arg3) -> bool
        IsValid(OEFragmentConnectionTypeBase self, OEFragmentConnection arg2) -> bool
        """
        return _oechem.OEFragmentConnectionTypeBase_IsValid(self, *args)


    def __eq__(self, arg2: 'OEFragmentConnectionTypeBase') -> "bool":
        """__eq__(OEFragmentConnectionTypeBase self, OEFragmentConnectionTypeBase arg2) -> bool"""
        return _oechem.OEFragmentConnectionTypeBase___eq__(self, arg2)


    def __ne__(self, arg2: 'OEFragmentConnectionTypeBase') -> "bool":
        """__ne__(OEFragmentConnectionTypeBase self, OEFragmentConnectionTypeBase arg2) -> bool"""
        return _oechem.OEFragmentConnectionTypeBase___ne__(self, arg2)

OEFragmentConnectionTypeBase_swigregister = _oechem.OEFragmentConnectionTypeBase_swigregister
OEFragmentConnectionTypeBase_swigregister(OEFragmentConnectionTypeBase)

class OEFragmentContactInteraction(OEFragmentConnectionTypeBase):
    """Proxy of C++ OEBio::OEFragmentContactInteraction 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__(OEBio::OEFragmentContactInteraction self) -> OEFragmentContactInteraction
        __init__(OEBio::OEFragmentContactInteraction self, OEFragmentContactInteraction rhs) -> OEFragmentContactInteraction
        """
        this = _oechem.new_OEFragmentContactInteraction(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEFragmentConnectionTypeBase *":
        """CreateCopy(OEFragmentContactInteraction self) -> OEFragmentConnectionTypeBase"""
        return _oechem.OEFragmentContactInteraction_CreateCopy(self)


    def IsValid(self, arg2: 'OEFragment', arg3: 'OEFragment') -> "bool":
        """IsValid(OEFragmentContactInteraction self, OEFragment arg2, OEFragment arg3) -> bool"""
        return _oechem.OEFragmentContactInteraction_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEFragmentContactInteraction
    __del__ = lambda self: None
OEFragmentContactInteraction_swigregister = _oechem.OEFragmentContactInteraction_swigregister
OEFragmentContactInteraction_swigregister(OEFragmentContactInteraction)

class OEFragmentHBondInteraction(OEFragmentConnectionTypeBase):
    """Proxy of C++ OEBio::OEFragmentHBondInteraction 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__(OEBio::OEFragmentHBondInteraction self, unsigned int type, bool charged=False) -> OEFragmentHBondInteraction
        __init__(OEBio::OEFragmentHBondInteraction self, unsigned int type) -> OEFragmentHBondInteraction
        __init__(OEBio::OEFragmentHBondInteraction self, OEFragmentHBondInteraction rhs) -> OEFragmentHBondInteraction
        """
        this = _oechem.new_OEFragmentHBondInteraction(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEFragmentConnectionTypeBase *":
        """CreateCopy(OEFragmentHBondInteraction self) -> OEFragmentConnectionTypeBase"""
        return _oechem.OEFragmentHBondInteraction_CreateCopy(self)


    def IsValid(self, arg2: 'OEFragment', arg3: 'OEFragment') -> "bool":
        """IsValid(OEFragmentHBondInteraction self, OEFragment arg2, OEFragment arg3) -> bool"""
        return _oechem.OEFragmentHBondInteraction_IsValid(self, arg2, arg3)


    def IsCharged(self) -> "bool":
        """IsCharged(OEFragmentHBondInteraction self) -> bool"""
        return _oechem.OEFragmentHBondInteraction_IsCharged(self)


    def GetHBondType(self) -> "unsigned int":
        """GetHBondType(OEFragmentHBondInteraction self) -> unsigned int"""
        return _oechem.OEFragmentHBondInteraction_GetHBondType(self)

    __swig_destroy__ = _oechem.delete_OEFragmentHBondInteraction
    __del__ = lambda self: None
OEFragmentHBondInteraction_swigregister = _oechem.OEFragmentHBondInteraction_swigregister
OEFragmentHBondInteraction_swigregister(OEFragmentHBondInteraction)

class OEFragmentChelatorInteraction(OEFragmentConnectionTypeBase):
    """Proxy of C++ OEBio::OEFragmentChelatorInteraction 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__(OEBio::OEFragmentChelatorInteraction self, unsigned int type) -> OEFragmentChelatorInteraction
        __init__(OEBio::OEFragmentChelatorInteraction self, OEFragmentChelatorInteraction rhs) -> OEFragmentChelatorInteraction
        """
        this = _oechem.new_OEFragmentChelatorInteraction(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEFragmentConnectionTypeBase *":
        """CreateCopy(OEFragmentChelatorInteraction self) -> OEFragmentConnectionTypeBase"""
        return _oechem.OEFragmentChelatorInteraction_CreateCopy(self)


    def IsValid(self, arg2: 'OEFragment', arg3: 'OEFragment') -> "bool":
        """IsValid(OEFragmentChelatorInteraction self, OEFragment arg2, OEFragment arg3) -> bool"""
        return _oechem.OEFragmentChelatorInteraction_IsValid(self, arg2, arg3)


    def GetChelatorType(self) -> "unsigned int":
        """GetChelatorType(OEFragmentChelatorInteraction self) -> unsigned int"""
        return _oechem.OEFragmentChelatorInteraction_GetChelatorType(self)

    __swig_destroy__ = _oechem.delete_OEFragmentChelatorInteraction
    __del__ = lambda self: None
OEFragmentChelatorInteraction_swigregister = _oechem.OEFragmentChelatorInteraction_swigregister
OEFragmentChelatorInteraction_swigregister(OEFragmentChelatorInteraction)

class OEUnaryFragmentConnectionBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEBio::OEFragmentConnection,bool)> 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__ = _oechem.delete_OEUnaryFragmentConnectionBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEFragmentConnection') -> "bool":
        """__call__(OEUnaryFragmentConnectionBoolFunc self, OEFragmentConnection arg0) -> bool"""
        return _oechem.OEUnaryFragmentConnectionBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEBio::OEFragmentConnection,bool)> self) -> OEUnaryFragmentConnectionBoolFunc"""
        if self.__class__ == OEUnaryFragmentConnectionBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryFragmentConnectionBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryFragmentConnectionBoolFunc(self)
        return weakref_proxy(self)
OEUnaryFragmentConnectionBoolFunc_swigregister = _oechem.OEUnaryFragmentConnectionBoolFunc_swigregister
OEUnaryFragmentConnectionBoolFunc_swigregister(OEUnaryFragmentConnectionBoolFunc)

class OEUnaryFragmentConnectionPred(OEUnaryFragmentConnectionBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEBio::OEFragmentConnection)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEBio::OEFragmentConnection)> self) -> OEUnaryFragmentConnectionPred"""
        if self.__class__ == OEUnaryFragmentConnectionPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryFragmentConnectionPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryFragmentConnectionPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEFragmentConnection') -> "bool":
        """__call__(OEUnaryFragmentConnectionPred self, OEFragmentConnection a) -> bool"""
        return _oechem.OEUnaryFragmentConnectionPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEBio::OEFragmentConnection > *":
        """CreatePredicateCopy(OEUnaryFragmentConnectionPred self) -> OEUnaryFragmentConnectionPred"""
        return _oechem.OEUnaryFragmentConnectionPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryFragmentConnectionPred(self)
        return weakref_proxy(self)
OEUnaryFragmentConnectionPred_swigregister = _oechem.OEUnaryFragmentConnectionPred_swigregister
OEUnaryFragmentConnectionPred_swigregister(OEUnaryFragmentConnectionPred)

class OEBinaryFragmentConnectionFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEBio::OEFragmentConnection,OEBio::OEFragmentConnection,bool)> 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__ = _oechem.delete_OEBinaryFragmentConnectionFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEFragmentConnection', a2: 'OEFragmentConnection') -> "bool":
        """__call__(OEBinaryFragmentConnectionFunc self, OEFragmentConnection a1, OEFragmentConnection a2) -> bool"""
        return _oechem.OEBinaryFragmentConnectionFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEBio::OEFragmentConnection,OEBio::OEFragmentConnection,bool)> self) -> OEBinaryFragmentConnectionFunc"""
        if self.__class__ == OEBinaryFragmentConnectionFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryFragmentConnectionFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryFragmentConnectionFunc(self)
        return weakref_proxy(self)
OEBinaryFragmentConnectionFunc_swigregister = _oechem.OEBinaryFragmentConnectionFunc_swigregister
OEBinaryFragmentConnectionFunc_swigregister(OEBinaryFragmentConnectionFunc)

class OEBinaryFragmentConnectionPred(OEBinaryFragmentConnectionFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEBio::OEFragmentConnection,OEBio::OEFragmentConnection)> class."""

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

    def __call__(self, a1: 'OEFragmentConnection', a2: 'OEFragmentConnection') -> "bool":
        """__call__(OEBinaryFragmentConnectionPred self, OEFragmentConnection a1, OEFragmentConnection a2) -> bool"""
        return _oechem.OEBinaryFragmentConnectionPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEBio::OEFragmentConnection,OEBio::OEFragmentConnection > *":
        """CreatePredicateCopy(OEBinaryFragmentConnectionPred self) -> OEBinaryFragmentConnectionPred"""
        return _oechem.OEBinaryFragmentConnectionPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEBio::OEFragmentConnection,OEBio::OEFragmentConnection)> self) -> OEBinaryFragmentConnectionPred"""
        if self.__class__ == OEBinaryFragmentConnectionPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryFragmentConnectionPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryFragmentConnectionPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryFragmentConnectionPred(self)
        return weakref_proxy(self)
OEBinaryFragmentConnectionPred_swigregister = _oechem.OEBinaryFragmentConnectionPred_swigregister
OEBinaryFragmentConnectionPred_swigregister(OEBinaryFragmentConnectionPred)


class OENotFragmentConnection(OEUnaryFragmentConnectionPred):
    """Negation of an OEUnary FragmentConnection Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary FragmentConnection Pred func) -> OENotNAME"""
        OEUnaryFragmentConnectionPred.__init__(self)
        if not isinstance(func, OEUnaryFragmentConnectionPred):
            raise TypeError("Expected a OEUnary FragmentConnection Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEFragmentConnection obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndFragmentConnection(OEUnaryFragmentConnectionPred):
    """Logical 'and' of two OEUnary FragmentConnection Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary FragmentConnection Pred func1, OEUnary FragmentConnection Pred func2) -> OEAnd FragmentConnection"""
        OEUnaryFragmentConnectionPred.__init__(self)
        if not isinstance(func1, OEUnaryFragmentConnectionPred):
            raise TypeError("Expected a OEUnary FragmentConnection Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryFragmentConnectionPred):
            raise TypeError("Expected a OEUnary FragmentConnection Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEFragmentConnection obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrFragmentConnection(OEUnaryFragmentConnectionPred):
    """Logical 'or' of two OEUnary FragmentConnection Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd FragmentConnection"""
        OEUnaryFragmentConnectionPred.__init__(self)
        if not isinstance(func1, OEUnaryFragmentConnectionPred):
            raise TypeError("Expected a OEUnary FragmentConnection Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryFragmentConnectionPred):
            raise TypeError("Expected a OEUnary FragmentConnection Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEFragmentConnection obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotFragmentConnection(OEBinaryFragmentConnectionPred):
    """Negation of an OEBinary FragmentConnection Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary FragmentConnection Pred func) -> OENot FragmentConnection"""
        OEBinaryFragmentConnectionPred.__init__(self)
        if not isinstance(func, OEBinaryFragmentConnectionPred):
            raise TypeError("Expected a OEBinary FragmentConnection Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEFragmentConnection obj1, OEFragmentConnection obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndFragmentConnection(OEBinaryFragmentConnectionPred):
    """Logical 'and' of two OEBinary FragmentConnection Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd FragmentConnection"""
        OEBinaryFragmentConnectionPred.__init__(self)
        if not isinstance(func1, OEBinaryFragmentConnectionPred):
            raise TypeError("Expected a OEBinary FragmentConnection Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryFragmentConnectionPred):
            raise TypeError("Expected a OEBinary FragmentConnection Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEFragmentConnection obj1, OEFragmentConnection obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrFragmentConnection(OEBinaryFragmentConnectionPred):
    """Logical 'or' of two OEBinary FragmentConnection Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd FragmentConnection"""
        OEBinaryFragmentConnectionPred.__init__(self)
        if not isinstance(func1, OEBinaryFragmentConnectionPred):
            raise TypeError("Expected a OEBinary FragmentConnection Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryFragmentConnectionPred):
            raise TypeError("Expected a OEBinary FragmentConnection Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEFragmentConnection obj1, OEFragmentConnection obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEFragmentConnection(OEBase):
    """Proxy of C++ OEBio::OEFragmentConnection 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, rhs: 'OEFragmentConnection'):
        """__init__(OEBio::OEFragmentConnection self, OEFragmentConnection rhs) -> OEFragmentConnection"""
        this = _oechem.new_OEFragmentConnection(rhs)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFragmentConnection
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEFragmentConnection self) -> OEBase"""
        return _oechem.OEFragmentConnection_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEFragmentConnection self) -> void const *"""
        return _oechem.OEFragmentConnection_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEFragmentConnection self, void const * arg2) -> bool"""
        return _oechem.OEFragmentConnection_IsDataType(self, arg2)


    def IsValid(self) -> "bool":
        """IsValid(OEFragmentConnection self) -> bool"""
        return _oechem.OEFragmentConnection_IsValid(self)


    def IsIntra(self) -> "bool":
        """IsIntra(OEFragmentConnection self) -> bool"""
        return _oechem.OEFragmentConnection_IsIntra(self)


    def IsInter(self) -> "bool":
        """IsInter(OEFragmentConnection self) -> bool"""
        return _oechem.OEFragmentConnection_IsInter(self)


    def GetBgnFragment(self) -> "OEBio::OEFragment const *":
        """GetBgnFragment(OEFragmentConnection self) -> OEFragment"""
        return _oechem.OEFragmentConnection_GetBgnFragment(self)


    def GetEndFragment(self) -> "OEBio::OEFragment const *":
        """GetEndFragment(OEFragmentConnection self) -> OEFragment"""
        return _oechem.OEFragmentConnection_GetEndFragment(self)


    def GetFragment(self, arg2: 'OEComponentTypeBase') -> "OEBio::OEFragment const *":
        """GetFragment(OEFragmentConnection self, OEComponentTypeBase arg2) -> OEFragment"""
        return _oechem.OEFragmentConnection_GetFragment(self, arg2)


    def GetConnectType(self) -> "OEBio::OEFragmentConnectionTypeBase const &":
        """GetConnectType(OEFragmentConnection self) -> OEFragmentConnectionTypeBase"""
        return _oechem.OEFragmentConnection_GetConnectType(self)


    def SetWeight(self, arg2: 'double') -> "void":
        """SetWeight(OEFragmentConnection self, double arg2)"""
        return _oechem.OEFragmentConnection_SetWeight(self, arg2)


    def GetWeight(self) -> "double":
        """GetWeight(OEFragmentConnection self) -> double"""
        return _oechem.OEFragmentConnection_GetWeight(self)

OEFragmentConnection_swigregister = _oechem.OEFragmentConnection_swigregister
OEFragmentConnection_swigregister(OEFragmentConnection)

class OEFragmentConnectionIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEFragmentConnection)> 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).OEBio::OEFragmentConnection)> self) -> OEFragmentConnectionIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEFragmentConnection)> self, OEFragmentConnectionIter rhs) -> OEFragmentConnectionIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEFragmentConnection)> self, OESystem::OEIterBase< OEBio::OEFragmentConnection const > * rhs) -> OEFragmentConnectionIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEFragmentConnection)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEFragmentConnection const >::NonConstA > * rhs) -> OEFragmentConnectionIter
        """
        this = _oechem.new_OEFragmentConnectionIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFragmentConnectionIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEFragmentConnection const > *":
        """Copy(OEFragmentConnectionIter self) -> OESystem::OEIterBase< OEBio::OEFragmentConnection const > *"""
        return _oechem.OEFragmentConnectionIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEFragmentConnectionIter self, OESystem::OEIterBase< OEBio::OEFragmentConnection const > * ib)
        Push(OEFragmentConnectionIter self, OEFragmentConnectionIter iter)
        """
        return _oechem.OEFragmentConnectionIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEFragmentConnection const,OEBio::OEFragmentConnection const > const &') -> "void":
        """Sort(OEFragmentConnectionIter self, OESystem::OEBinaryPredicate< OEBio::OEFragmentConnection const,OEBio::OEFragmentConnection const > const & sort_criterion)"""
        return _oechem.OEFragmentConnectionIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEFragmentConnection const > &":
        """ToFirst(OEFragmentConnectionIter self) -> OEFragmentConnectionIter"""
        return _oechem.OEFragmentConnectionIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEFragmentConnection const > &":
        """ToLast(OEFragmentConnectionIter self) -> OEFragmentConnectionIter"""
        return _oechem.OEFragmentConnectionIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEFragmentConnection const &":
        """__ref__(OEFragmentConnectionIter self) -> OEFragmentConnection"""
        return _oechem.OEFragmentConnectionIter___ref__(self)


    def IsValid(self):
      return _oechem.OEFragmentConnectionIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEFragmentConnectionIter self) -> PyObject *"""
        return _oechem.OEFragmentConnectionIter_next(self)


    def Target(self) -> "OEBio::OEFragmentConnection const &":
        """Target(OEFragmentConnectionIter self) -> OEFragmentConnection"""
        return _oechem.OEFragmentConnectionIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEFragmentConnection const > &":
        """
        Next(OEFragmentConnectionIter self) -> OEFragmentConnectionIter
        Next(OEFragmentConnectionIter self, int i) -> OEFragmentConnectionIter
        """
        return _oechem.OEFragmentConnectionIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEFragmentConnection const > &":
        """
        Prev(OEFragmentConnectionIter self) -> OEFragmentConnectionIter
        Prev(OEFragmentConnectionIter self, int i) -> OEFragmentConnectionIter
        """
        return _oechem.OEFragmentConnectionIter_Prev(self, *args)

OEFragmentConnectionIter_swigregister = _oechem.OEFragmentConnectionIter_swigregister
OEFragmentConnectionIter_swigregister(OEFragmentConnectionIter)

class OEHasConnectionType(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEHasConnectionType 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__(OEBio::OEHasConnectionType self, OEFragmentConnectionTypeBase itype) -> OEHasConnectionType
        __init__(OEBio::OEHasConnectionType self, OEHasConnectionType rhs) -> OEHasConnectionType
        """
        this = _oechem.new_OEHasConnectionType(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEFragmentConnection') -> "bool":
        """__call__(OEHasConnectionType self, OEFragmentConnection i) -> bool"""
        return _oechem.OEHasConnectionType___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEHasConnectionType self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEHasConnectionType_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasConnectionType
    __del__ = lambda self: None
OEHasConnectionType_swigregister = _oechem.OEHasConnectionType_swigregister
OEHasConnectionType_swigregister(OEHasConnectionType)

class OEHasConnection(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEHasConnection 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__(OEBio::OEHasConnection self, OEAtomBase arg2) -> OEHasConnection
        __init__(OEBio::OEHasConnection self, OEHasConnection rhs) -> OEHasConnection
        """
        this = _oechem.new_OEHasConnection(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEFragmentConnection') -> "bool":
        """__call__(OEHasConnection self, OEFragmentConnection c) -> bool"""
        return _oechem.OEHasConnection___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEHasConnection self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEHasConnection_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasConnection
    __del__ = lambda self: None
OEHasConnection_swigregister = _oechem.OEHasConnection_swigregister
OEHasConnection_swigregister(OEHasConnection)

class OEIsContactInteraction(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEIsContactInteraction class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsContactInteraction self) -> OEIsContactInteraction"""
        this = _oechem.new_OEIsContactInteraction()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEFragmentConnection') -> "bool":
        """__call__(OEIsContactInteraction self, OEFragmentConnection c) -> bool"""
        return _oechem.OEIsContactInteraction___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEIsContactInteraction self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEIsContactInteraction_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsContactInteraction
    __del__ = lambda self: None
OEIsContactInteraction_swigregister = _oechem.OEIsContactInteraction_swigregister
OEIsContactInteraction_swigregister(OEIsContactInteraction)

class OEIsHBondInteraction(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEIsHBondInteraction class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsHBondInteraction self) -> OEIsHBondInteraction"""
        this = _oechem.new_OEIsHBondInteraction()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEFragmentConnection') -> "bool":
        """__call__(OEIsHBondInteraction self, OEFragmentConnection c) -> bool"""
        return _oechem.OEIsHBondInteraction___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEIsHBondInteraction self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEIsHBondInteraction_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsHBondInteraction
    __del__ = lambda self: None
OEIsHBondInteraction_swigregister = _oechem.OEIsHBondInteraction_swigregister
OEIsHBondInteraction_swigregister(OEIsHBondInteraction)

class OEIsChelatorInteraction(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEIsChelatorInteraction class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsChelatorInteraction self) -> OEIsChelatorInteraction"""
        this = _oechem.new_OEIsChelatorInteraction()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEFragmentConnection') -> "bool":
        """__call__(OEIsChelatorInteraction self, OEFragmentConnection c) -> bool"""
        return _oechem.OEIsChelatorInteraction___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEIsChelatorInteraction self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEIsChelatorInteraction_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsChelatorInteraction
    __del__ = lambda self: None
OEIsChelatorInteraction_swigregister = _oechem.OEIsChelatorInteraction_swigregister
OEIsChelatorInteraction_swigregister(OEIsChelatorInteraction)

class OEIsInterConnection(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEIsInterConnection class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsInterConnection self) -> OEIsInterConnection"""
        this = _oechem.new_OEIsInterConnection()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEFragmentConnection') -> "bool":
        """__call__(OEIsInterConnection self, OEFragmentConnection i) -> bool"""
        return _oechem.OEIsInterConnection___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEIsInterConnection self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEIsInterConnection_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsInterConnection
    __del__ = lambda self: None
OEIsInterConnection_swigregister = _oechem.OEIsInterConnection_swigregister
OEIsInterConnection_swigregister(OEIsInterConnection)

class OEIsIntraConnection(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEIsIntraConnection class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsIntraConnection self) -> OEIsIntraConnection"""
        this = _oechem.new_OEIsIntraConnection()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEFragmentConnection') -> "bool":
        """__call__(OEIsIntraConnection self, OEFragmentConnection i) -> bool"""
        return _oechem.OEIsIntraConnection___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEIsIntraConnection self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEIsIntraConnection_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsIntraConnection
    __del__ = lambda self: None
OEIsIntraConnection_swigregister = _oechem.OEIsIntraConnection_swigregister
OEIsIntraConnection_swigregister(OEIsIntraConnection)

class OEHasResidueConnection(OEUnaryFragmentConnectionPred):
    """Proxy of C++ OEBio::OEHasResidueConnection 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__(OEBio::OEHasResidueConnection self, OEResidue arg2) -> OEHasResidueConnection
        __init__(OEBio::OEHasResidueConnection self, OEResidue arg2, OEComponentTypeBase ctype) -> OEHasResidueConnection
        __init__(OEBio::OEHasResidueConnection self, OEHasResidueConnection rhs) -> OEHasResidueConnection
        """
        this = _oechem.new_OEHasResidueConnection(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEFragmentConnection') -> "bool":
        """__call__(OEHasResidueConnection self, OEFragmentConnection i) -> bool"""
        return _oechem.OEHasResidueConnection___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEFragmentConnection,bool,true,true > *":
        """CreateCopy(OEHasResidueConnection self) -> OEUnaryFragmentConnectionBoolFunc"""
        return _oechem.OEHasResidueConnection_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasResidueConnection
    __del__ = lambda self: None
OEHasResidueConnection_swigregister = _oechem.OEHasResidueConnection_swigregister
OEHasResidueConnection_swigregister(OEHasResidueConnection)

class OEFragmentNetwork(object):
    """Proxy of C++ OEBio::OEFragmentNetwork 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__(OEBio::OEFragmentNetwork self) -> OEFragmentNetwork
        __init__(OEBio::OEFragmentNetwork self, OEMolBase protein, OEMolBase ligand) -> OEFragmentNetwork
        """
        this = _oechem.new_OEFragmentNetwork(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEFragmentNetwork
    __del__ = lambda self: None

    def AddMolecule(self, mol: 'OEMolBase', ctype: 'OEComponentTypeBase') -> "OEChem::OEMolBase const *":
        """AddMolecule(OEFragmentNetwork self, OEMolBase mol, OEComponentTypeBase ctype) -> OEMolBase"""
        return _oechem.OEFragmentNetwork_AddMolecule(self, mol, ctype)


    def GetMolecule(self, ctype: 'OEComponentTypeBase') -> "OEChem::OEMolBase const *":
        """GetMolecule(OEFragmentNetwork self, OEComponentTypeBase ctype) -> OEMolBase"""
        return _oechem.OEFragmentNetwork_GetMolecule(self, ctype)


    def GetMolecules(self, *args) -> "OESystem::OEIterBase< OEChem::OEMolBase const > *":
        """
        GetMolecules(OEFragmentNetwork self) -> OESystem::OEIterBase< OEChem::OEMolBase const >
        GetMolecules(OEFragmentNetwork self, OEComponentTypeBase ctype) -> OESystem::OEIterBase< OEChem::OEMolBase const > *
        """
        return _oechem.OEFragmentNetwork_GetMolecules(self, *args)


    def HasConnection(self, pred: 'OEUnaryFragmentConnectionPred') -> "bool":
        """HasConnection(OEFragmentNetwork self, OEUnaryFragmentConnectionPred pred) -> bool"""
        return _oechem.OEFragmentNetwork_HasConnection(self, pred)


    def GetConnections(self, *args) -> "OESystem::OEIterBase< OEBio::OEFragmentConnection const > *":
        """
        GetConnections(OEFragmentNetwork self) -> OESystem::OEIterBase< OEBio::OEFragmentConnection const >
        GetConnections(OEFragmentNetwork self, OEUnaryFragmentConnectionPred pred) -> OESystem::OEIterBase< OEBio::OEFragmentConnection const > *
        """
        return _oechem.OEFragmentNetwork_GetConnections(self, *args)


    def IsValid(self) -> "bool":
        """IsValid(OEFragmentNetwork self) -> bool"""
        return _oechem.OEFragmentNetwork_IsValid(self)


    def IsValid(self):
      return _oechem.OEFragmentNetwork___nonzero__(self)



    def GetTitle(self) -> "std::string const &":
        """GetTitle(OEFragmentNetwork self) -> std::string const &"""
        return _oechem.OEFragmentNetwork_GetTitle(self)


    def SetTitle(self, title: 'std::string const &') -> "void":
        """SetTitle(OEFragmentNetwork self, std::string const & title)"""
        return _oechem.OEFragmentNetwork_SetTitle(self, title)


    def NumMolecules(self) -> "unsigned int":
        """NumMolecules(OEFragmentNetwork self) -> unsigned int"""
        return _oechem.OEFragmentNetwork_NumMolecules(self)


    def NumFragments(self) -> "unsigned int":
        """NumFragments(OEFragmentNetwork self) -> unsigned int"""
        return _oechem.OEFragmentNetwork_NumFragments(self)


    def NumConnections(self) -> "unsigned int":
        """NumConnections(OEFragmentNetwork self) -> unsigned int"""
        return _oechem.OEFragmentNetwork_NumConnections(self)

OEFragmentNetwork_swigregister = _oechem.OEFragmentNetwork_swigregister
OEFragmentNetwork_swigregister(OEFragmentNetwork)


def OEGetConnections(*args) -> "OESystem::OEIterBase< OEBio::OEFragmentConnection const > *":
    """
    OEGetConnections(OEMolBase mol, OEFragmentNetwork arg2) -> OESystem::OEIterBase< OEBio::OEFragmentConnection const >
    OEGetConnections(OEAtomBase atom, OEFragmentNetwork arg2) -> OESystem::OEIterBase< OEBio::OEFragmentConnection const > *
    """
    return _oechem.OEGetConnections(*args)
class OEInteractionHintComponentTypeBase(object):
    """Proxy of C++ OEBio::OEInteractionHintComponentTypeBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEInteractionHintComponentTypeBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintComponentTypeBase *":
        """CreateCopy(OEInteractionHintComponentTypeBase self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OEInteractionHintComponentTypeBase_CreateCopy(self)


    def GetName(self) -> "std::string":
        """GetName(OEInteractionHintComponentTypeBase self) -> std::string"""
        return _oechem.OEInteractionHintComponentTypeBase_GetName(self)


    def __eq__(self, arg2: 'OEInteractionHintComponentTypeBase') -> "bool":
        """__eq__(OEInteractionHintComponentTypeBase self, OEInteractionHintComponentTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintComponentTypeBase___eq__(self, arg2)


    def __ne__(self, arg2: 'OEInteractionHintComponentTypeBase') -> "bool":
        """__ne__(OEInteractionHintComponentTypeBase self, OEInteractionHintComponentTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintComponentTypeBase___ne__(self, arg2)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OEInteractionHintComponentTypeBase self, OEMolBase arg2) -> bool"""
        return _oechem.OEInteractionHintComponentTypeBase_IsValid(self, arg2)


    def GetImpl(self) -> "OEBio::OEInteractionHintComponentTypeBaseImpl const *":
        """GetImpl(OEInteractionHintComponentTypeBase self) -> OEBio::OEInteractionHintComponentTypeBaseImpl const *"""
        return _oechem.OEInteractionHintComponentTypeBase_GetImpl(self)

OEInteractionHintComponentTypeBase_swigregister = _oechem.OEInteractionHintComponentTypeBase_swigregister
OEInteractionHintComponentTypeBase_swigregister(OEInteractionHintComponentTypeBase)

class OEProteinInteractionHintComponent(OEInteractionHintComponentTypeBase):
    """Proxy of C++ OEBio::OEProteinInteractionHintComponent 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__(OEBio::OEProteinInteractionHintComponent self) -> OEProteinInteractionHintComponent
        __init__(OEBio::OEProteinInteractionHintComponent self, OEProteinInteractionHintComponent rhs) -> OEProteinInteractionHintComponent
        """
        this = _oechem.new_OEProteinInteractionHintComponent(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintComponentTypeBase *":
        """CreateCopy(OEProteinInteractionHintComponent self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OEProteinInteractionHintComponent_CreateCopy(self)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OEProteinInteractionHintComponent self, OEMolBase arg2) -> bool"""
        return _oechem.OEProteinInteractionHintComponent_IsValid(self, arg2)

    __swig_destroy__ = _oechem.delete_OEProteinInteractionHintComponent
    __del__ = lambda self: None
OEProteinInteractionHintComponent_swigregister = _oechem.OEProteinInteractionHintComponent_swigregister
OEProteinInteractionHintComponent_swigregister(OEProteinInteractionHintComponent)

class OELigandInteractionHintComponent(OEInteractionHintComponentTypeBase):
    """Proxy of C++ OEBio::OELigandInteractionHintComponent 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__(OEBio::OELigandInteractionHintComponent self) -> OELigandInteractionHintComponent
        __init__(OEBio::OELigandInteractionHintComponent self, OELigandInteractionHintComponent rhs) -> OELigandInteractionHintComponent
        """
        this = _oechem.new_OELigandInteractionHintComponent(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintComponentTypeBase *":
        """CreateCopy(OELigandInteractionHintComponent self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OELigandInteractionHintComponent_CreateCopy(self)


    def IsValid(self, arg2: 'OEMolBase') -> "bool":
        """IsValid(OELigandInteractionHintComponent self, OEMolBase arg2) -> bool"""
        return _oechem.OELigandInteractionHintComponent_IsValid(self, arg2)


    def GetMaxHeavyAtom(self) -> "unsigned int":
        """GetMaxHeavyAtom(OELigandInteractionHintComponent self) -> unsigned int"""
        return _oechem.OELigandInteractionHintComponent_GetMaxHeavyAtom(self)


    def SetMaxHeavyAtom(self, maxhvy: 'unsigned int') -> "void":
        """SetMaxHeavyAtom(OELigandInteractionHintComponent self, unsigned int maxhvy)"""
        return _oechem.OELigandInteractionHintComponent_SetMaxHeavyAtom(self, maxhvy)

    __swig_destroy__ = _oechem.delete_OELigandInteractionHintComponent
    __del__ = lambda self: None
OELigandInteractionHintComponent_swigregister = _oechem.OELigandInteractionHintComponent_swigregister
OELigandInteractionHintComponent_swigregister(OELigandInteractionHintComponent)

class OEInteractionHintFragment(OEBase):
    """Proxy of C++ OEBio::OEInteractionHintFragment 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, rhs: 'OEInteractionHintFragment'):
        """__init__(OEBio::OEInteractionHintFragment self, OEInteractionHintFragment rhs) -> OEInteractionHintFragment"""
        this = _oechem.new_OEInteractionHintFragment(rhs)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintFragment
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEInteractionHintFragment self) -> OEBase"""
        return _oechem.OEInteractionHintFragment_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEInteractionHintFragment self) -> void const *"""
        return _oechem.OEInteractionHintFragment_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEInteractionHintFragment self, void const * arg2) -> bool"""
        return _oechem.OEInteractionHintFragment_IsDataType(self, arg2)


    def AddAtom(self, arg2: 'OEAtomBase') -> "bool":
        """AddAtom(OEInteractionHintFragment self, OEAtomBase arg2) -> bool"""
        return _oechem.OEInteractionHintFragment_AddAtom(self, arg2)


    def HasAtom(self, arg2: 'OEAtomBase') -> "bool":
        """HasAtom(OEInteractionHintFragment self, OEAtomBase arg2) -> bool"""
        return _oechem.OEInteractionHintFragment_HasAtom(self, arg2)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEInteractionHintFragment self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAtoms(OEInteractionHintFragment self, OEUnaryAtomPred arg2) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEInteractionHintFragment_GetAtoms(self, *args)


    def GetAtom(self, arg2: 'OEUnaryAtomPred') -> "OEChem::OEAtomBase const *":
        """GetAtom(OEInteractionHintFragment self, OEUnaryAtomPred arg2) -> OEAtomBase"""
        return _oechem.OEInteractionHintFragment_GetAtom(self, arg2)


    def NumAtoms(self) -> "unsigned int":
        """NumAtoms(OEInteractionHintFragment self) -> unsigned int"""
        return _oechem.OEInteractionHintFragment_NumAtoms(self)


    def GetComponentType(self) -> "OEBio::OEInteractionHintComponentTypeBase const &":
        """GetComponentType(OEInteractionHintFragment self) -> OEInteractionHintComponentTypeBase"""
        return _oechem.OEInteractionHintFragment_GetComponentType(self)

OEInteractionHintFragment_swigregister = _oechem.OEInteractionHintFragment_swigregister
OEInteractionHintFragment_swigregister(OEInteractionHintFragment)

class OEInteractionHintTypeBase(object):
    """Proxy of C++ OEBio::OEInteractionHintTypeBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEInteractionHintTypeBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEInteractionHintTypeBase self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHintTypeBase_CreateCopy(self)


    def GetName(self) -> "std::string":
        """GetName(OEInteractionHintTypeBase self) -> std::string"""
        return _oechem.OEInteractionHintTypeBase_GetName(self)


    def IsValid(self, *args) -> "bool":
        """
        IsValid(OEInteractionHintTypeBase self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool
        IsValid(OEInteractionHintTypeBase self, OEInteractionHint arg2) -> bool
        """
        return _oechem.OEInteractionHintTypeBase_IsValid(self, *args)


    def __eq__(self, arg2: 'OEInteractionHintTypeBase') -> "bool":
        """__eq__(OEInteractionHintTypeBase self, OEInteractionHintTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintTypeBase___eq__(self, arg2)


    def __ne__(self, arg2: 'OEInteractionHintTypeBase') -> "bool":
        """__ne__(OEInteractionHintTypeBase self, OEInteractionHintTypeBase arg2) -> bool"""
        return _oechem.OEInteractionHintTypeBase___ne__(self, arg2)

OEInteractionHintTypeBase_swigregister = _oechem.OEInteractionHintTypeBase_swigregister
OEInteractionHintTypeBase_swigregister(OEInteractionHintTypeBase)


def OEGetActiveSiteInteractionHintTypes() -> "OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *":
    """OEGetActiveSiteInteractionHintTypes() -> OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *"""
    return _oechem.OEGetActiveSiteInteractionHintTypes()
class OEContactInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEContactInteractionHint 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__(OEBio::OEContactInteractionHint self) -> OEContactInteractionHint
        __init__(OEBio::OEContactInteractionHint self, OEContactInteractionHint rhs) -> OEContactInteractionHint
        """
        this = _oechem.new_OEContactInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEContactInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEContactInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEContactInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEContactInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEContactInteractionHint
    __del__ = lambda self: None
OEContactInteractionHint_swigregister = _oechem.OEContactInteractionHint_swigregister
OEContactInteractionHint_swigregister(OEContactInteractionHint)

class OEHBondInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEHBondInteractionHint 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__(OEBio::OEHBondInteractionHint self, unsigned int type, bool charged=False) -> OEHBondInteractionHint
        __init__(OEBio::OEHBondInteractionHint self, unsigned int type) -> OEHBondInteractionHint
        __init__(OEBio::OEHBondInteractionHint self, OEHBondInteractionHint rhs) -> OEHBondInteractionHint
        """
        this = _oechem.new_OEHBondInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEHBondInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEHBondInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEHBondInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEHBondInteractionHint_IsValid(self, arg2, arg3)


    def IsCharged(self) -> "bool":
        """IsCharged(OEHBondInteractionHint self) -> bool"""
        return _oechem.OEHBondInteractionHint_IsCharged(self)


    def GetHBondType(self) -> "unsigned int":
        """GetHBondType(OEHBondInteractionHint self) -> unsigned int"""
        return _oechem.OEHBondInteractionHint_GetHBondType(self)

    __swig_destroy__ = _oechem.delete_OEHBondInteractionHint
    __del__ = lambda self: None
OEHBondInteractionHint_swigregister = _oechem.OEHBondInteractionHint_swigregister
OEHBondInteractionHint_swigregister(OEHBondInteractionHint)

class OEChelatorInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEChelatorInteractionHint 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__(OEBio::OEChelatorInteractionHint self, unsigned int type) -> OEChelatorInteractionHint
        __init__(OEBio::OEChelatorInteractionHint self, OEChelatorInteractionHint rhs) -> OEChelatorInteractionHint
        """
        this = _oechem.new_OEChelatorInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEChelatorInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEChelatorInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEChelatorInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEChelatorInteractionHint_IsValid(self, arg2, arg3)


    def GetChelatorType(self) -> "unsigned int":
        """GetChelatorType(OEChelatorInteractionHint self) -> unsigned int"""
        return _oechem.OEChelatorInteractionHint_GetChelatorType(self)

    __swig_destroy__ = _oechem.delete_OEChelatorInteractionHint
    __del__ = lambda self: None
OEChelatorInteractionHint_swigregister = _oechem.OEChelatorInteractionHint_swigregister
OEChelatorInteractionHint_swigregister(OEChelatorInteractionHint)

class OECovalentInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OECovalentInteractionHint 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__(OEBio::OECovalentInteractionHint self) -> OECovalentInteractionHint
        __init__(OEBio::OECovalentInteractionHint self, OECovalentInteractionHint rhs) -> OECovalentInteractionHint
        """
        this = _oechem.new_OECovalentInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OECovalentInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OECovalentInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OECovalentInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OECovalentInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OECovalentInteractionHint
    __del__ = lambda self: None
OECovalentInteractionHint_swigregister = _oechem.OECovalentInteractionHint_swigregister
OECovalentInteractionHint_swigregister(OECovalentInteractionHint)

class OEClashInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEClashInteractionHint 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__(OEBio::OEClashInteractionHint self) -> OEClashInteractionHint
        __init__(OEBio::OEClashInteractionHint self, OEClashInteractionHint rhs) -> OEClashInteractionHint
        """
        this = _oechem.new_OEClashInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEClashInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEClashInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEClashInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEClashInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEClashInteractionHint
    __del__ = lambda self: None
OEClashInteractionHint_swigregister = _oechem.OEClashInteractionHint_swigregister
OEClashInteractionHint_swigregister(OEClashInteractionHint)

class OESaltBridgeInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OESaltBridgeInteractionHint 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__(OEBio::OESaltBridgeInteractionHint self, unsigned int type) -> OESaltBridgeInteractionHint
        __init__(OEBio::OESaltBridgeInteractionHint self, OESaltBridgeInteractionHint rhs) -> OESaltBridgeInteractionHint
        """
        this = _oechem.new_OESaltBridgeInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OESaltBridgeInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OESaltBridgeInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OESaltBridgeInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OESaltBridgeInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OESaltBridgeInteractionHint
    __del__ = lambda self: None
OESaltBridgeInteractionHint_swigregister = _oechem.OESaltBridgeInteractionHint_swigregister
OESaltBridgeInteractionHint_swigregister(OESaltBridgeInteractionHint)

class OEStackingInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEStackingInteractionHint 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__(OEBio::OEStackingInteractionHint self, unsigned int type) -> OEStackingInteractionHint
        __init__(OEBio::OEStackingInteractionHint self, OEStackingInteractionHint rhs) -> OEStackingInteractionHint
        """
        this = _oechem.new_OEStackingInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEStackingInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEStackingInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEStackingInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEStackingInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEStackingInteractionHint
    __del__ = lambda self: None
OEStackingInteractionHint_swigregister = _oechem.OEStackingInteractionHint_swigregister
OEStackingInteractionHint_swigregister(OEStackingInteractionHint)

class OECationPiInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OECationPiInteractionHint 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__(OEBio::OECationPiInteractionHint self, unsigned int type) -> OECationPiInteractionHint
        __init__(OEBio::OECationPiInteractionHint self, OECationPiInteractionHint rhs) -> OECationPiInteractionHint
        """
        this = _oechem.new_OECationPiInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OECationPiInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OECationPiInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OECationPiInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OECationPiInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OECationPiInteractionHint
    __del__ = lambda self: None
OECationPiInteractionHint_swigregister = _oechem.OECationPiInteractionHint_swigregister
OECationPiInteractionHint_swigregister(OECationPiInteractionHint)

class OEHalogenBondInteractionHint(OEInteractionHintTypeBase):
    """Proxy of C++ OEBio::OEHalogenBondInteractionHint 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__(OEBio::OEHalogenBondInteractionHint self, unsigned int type) -> OEHalogenBondInteractionHint
        __init__(OEBio::OEHalogenBondInteractionHint self, OEHalogenBondInteractionHint rhs) -> OEHalogenBondInteractionHint
        """
        this = _oechem.new_OEHalogenBondInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEInteractionHintTypeBase *":
        """CreateCopy(OEHalogenBondInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEHalogenBondInteractionHint_CreateCopy(self)


    def IsValid(self, arg2: 'OEInteractionHintFragment', arg3: 'OEInteractionHintFragment') -> "bool":
        """IsValid(OEHalogenBondInteractionHint self, OEInteractionHintFragment arg2, OEInteractionHintFragment arg3) -> bool"""
        return _oechem.OEHalogenBondInteractionHint_IsValid(self, arg2, arg3)

    __swig_destroy__ = _oechem.delete_OEHalogenBondInteractionHint
    __del__ = lambda self: None
OEHalogenBondInteractionHint_swigregister = _oechem.OEHalogenBondInteractionHint_swigregister
OEHalogenBondInteractionHint_swigregister(OEHalogenBondInteractionHint)

class OEInteractionHintTypeBaseIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> 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).OEBio::OEInteractionHintTypeBase)> self) -> OEInteractionHintTypeBaseIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> self, OEInteractionHintTypeBaseIter rhs) -> OEInteractionHintTypeBaseIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> self, OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > * rhs) -> OEInteractionHintTypeBaseIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHintTypeBase)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEInteractionHintTypeBase const >::NonConstA > * rhs) -> OEInteractionHintTypeBaseIter
        """
        this = _oechem.new_OEInteractionHintTypeBaseIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintTypeBaseIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *":
        """Copy(OEInteractionHintTypeBaseIter self) -> OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > *"""
        return _oechem.OEInteractionHintTypeBaseIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInteractionHintTypeBaseIter self, OESystem::OEIterBase< OEBio::OEInteractionHintTypeBase const > * ib)
        Push(OEInteractionHintTypeBaseIter self, OEInteractionHintTypeBaseIter iter)
        """
        return _oechem.OEInteractionHintTypeBaseIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEInteractionHintTypeBase const,OEBio::OEInteractionHintTypeBase const > const &') -> "void":
        """Sort(OEInteractionHintTypeBaseIter self, OESystem::OEBinaryPredicate< OEBio::OEInteractionHintTypeBase const,OEBio::OEInteractionHintTypeBase const > const & sort_criterion)"""
        return _oechem.OEInteractionHintTypeBaseIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """ToFirst(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter"""
        return _oechem.OEInteractionHintTypeBaseIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """ToLast(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter"""
        return _oechem.OEInteractionHintTypeBaseIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEInteractionHintTypeBase const &":
        """__ref__(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHintTypeBaseIter___ref__(self)


    def IsValid(self):
      return _oechem.OEInteractionHintTypeBaseIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEInteractionHintTypeBaseIter self) -> PyObject *"""
        return _oechem.OEInteractionHintTypeBaseIter_next(self)


    def Target(self) -> "OEBio::OEInteractionHintTypeBase const &":
        """Target(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHintTypeBaseIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """
        Next(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter
        Next(OEInteractionHintTypeBaseIter self, int i) -> OEInteractionHintTypeBaseIter
        """
        return _oechem.OEInteractionHintTypeBaseIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHintTypeBase const > &":
        """
        Prev(OEInteractionHintTypeBaseIter self) -> OEInteractionHintTypeBaseIter
        Prev(OEInteractionHintTypeBaseIter self, int i) -> OEInteractionHintTypeBaseIter
        """
        return _oechem.OEInteractionHintTypeBaseIter_Prev(self, *args)

OEInteractionHintTypeBaseIter_swigregister = _oechem.OEInteractionHintTypeBaseIter_swigregister
OEInteractionHintTypeBaseIter_swigregister(OEInteractionHintTypeBaseIter)

class OEUnaryInteractionHintBoolFunc(object):
    """Proxy of C++ OESystem::OEUnaryFunction<(OEBio::OEInteractionHint,bool)> 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__ = _oechem.delete_OEUnaryInteractionHintBoolFunc
    __del__ = lambda self: None

    def __call__(self, arg0: 'OEInteractionHint') -> "bool":
        """__call__(OEUnaryInteractionHintBoolFunc self, OEInteractionHint arg0) -> bool"""
        return _oechem.OEUnaryInteractionHintBoolFunc___call__(self, arg0)


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



    def __init__(self):
        """__init__(OESystem::OEUnaryFunction<(OEBio::OEInteractionHint,bool)> self) -> OEUnaryInteractionHintBoolFunc"""
        if self.__class__ == OEUnaryInteractionHintBoolFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryInteractionHintBoolFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryInteractionHintBoolFunc(self)
        return weakref_proxy(self)
OEUnaryInteractionHintBoolFunc_swigregister = _oechem.OEUnaryInteractionHintBoolFunc_swigregister
OEUnaryInteractionHintBoolFunc_swigregister(OEUnaryInteractionHintBoolFunc)

class OEUnaryInteractionHintPred(OEUnaryInteractionHintBoolFunc):
    """Proxy of C++ OESystem::OEUnaryPredicate<(OEBio::OEInteractionHint)> class."""

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

    def __init__(self):
        """__init__(OESystem::OEUnaryPredicate<(OEBio::OEInteractionHint)> self) -> OEUnaryInteractionHintPred"""
        if self.__class__ == OEUnaryInteractionHintPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEUnaryInteractionHintPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEUnaryInteractionHintPred
    __del__ = lambda self: None

    def __call__(self, a: 'OEInteractionHint') -> "bool":
        """__call__(OEUnaryInteractionHintPred self, OEInteractionHint a) -> bool"""
        return _oechem.OEUnaryInteractionHintPred___call__(self, a)


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



    def CreatePredicateCopy(self) -> "OESystem::OEUnaryPredicate< OEBio::OEInteractionHint > *":
        """CreatePredicateCopy(OEUnaryInteractionHintPred self) -> OEUnaryInteractionHintPred"""
        return _oechem.OEUnaryInteractionHintPred_CreatePredicateCopy(self)

    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEUnaryInteractionHintPred(self)
        return weakref_proxy(self)
OEUnaryInteractionHintPred_swigregister = _oechem.OEUnaryInteractionHintPred_swigregister
OEUnaryInteractionHintPred_swigregister(OEUnaryInteractionHintPred)

class OEBinaryInteractionHintFunc(object):
    """Proxy of C++ OESystem::OEBinaryFunction<(OEBio::OEInteractionHint,OEBio::OEInteractionHint,bool)> 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__ = _oechem.delete_OEBinaryInteractionHintFunc
    __del__ = lambda self: None

    def __call__(self, a1: 'OEInteractionHint', a2: 'OEInteractionHint') -> "bool":
        """__call__(OEBinaryInteractionHintFunc self, OEInteractionHint a1, OEInteractionHint a2) -> bool"""
        return _oechem.OEBinaryInteractionHintFunc___call__(self, a1, a2)


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



    def __init__(self):
        """__init__(OESystem::OEBinaryFunction<(OEBio::OEInteractionHint,OEBio::OEInteractionHint,bool)> self) -> OEBinaryInteractionHintFunc"""
        if self.__class__ == OEBinaryInteractionHintFunc:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryInteractionHintFunc(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryInteractionHintFunc(self)
        return weakref_proxy(self)
OEBinaryInteractionHintFunc_swigregister = _oechem.OEBinaryInteractionHintFunc_swigregister
OEBinaryInteractionHintFunc_swigregister(OEBinaryInteractionHintFunc)

class OEBinaryInteractionHintPred(OEBinaryInteractionHintFunc):
    """Proxy of C++ OESystem::OEBinaryPredicate<(OEBio::OEInteractionHint,OEBio::OEInteractionHint)> class."""

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

    def __call__(self, a1: 'OEInteractionHint', a2: 'OEInteractionHint') -> "bool":
        """__call__(OEBinaryInteractionHintPred self, OEInteractionHint a1, OEInteractionHint a2) -> bool"""
        return _oechem.OEBinaryInteractionHintPred___call__(self, a1, a2)


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



    def CreatePredicateCopy(self) -> "OESystem::OEBinaryPredicate< OEBio::OEInteractionHint,OEBio::OEInteractionHint > *":
        """CreatePredicateCopy(OEBinaryInteractionHintPred self) -> OEBinaryInteractionHintPred"""
        return _oechem.OEBinaryInteractionHintPred_CreatePredicateCopy(self)


    def __init__(self):
        """__init__(OESystem::OEBinaryPredicate<(OEBio::OEInteractionHint,OEBio::OEInteractionHint)> self) -> OEBinaryInteractionHintPred"""
        if self.__class__ == OEBinaryInteractionHintPred:
            _self = None
        else:
            _self = self
        this = _oechem.new_OEBinaryInteractionHintPred(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEBinaryInteractionHintPred
    __del__ = lambda self: None
    def __disown__(self):
        self.this.disown()
        _oechem.disown_OEBinaryInteractionHintPred(self)
        return weakref_proxy(self)
OEBinaryInteractionHintPred_swigregister = _oechem.OEBinaryInteractionHintPred_swigregister
OEBinaryInteractionHintPred_swigregister(OEBinaryInteractionHintPred)


class OENotInteractionHint(OEUnaryInteractionHintPred):
    """Negation of an OEUnary InteractionHint Pred"""
    def __init__(self, func):
        """__init__(self, OEUnary InteractionHint Pred func) -> OENotNAME"""
        OEUnaryInteractionHintPred.__init__(self)
        if not isinstance(func, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj):
        """__call__(self, OEInteractionHint obj) -> bool"""
        return not self._func(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func).__disown__()

class OEAndInteractionHint(OEUnaryInteractionHintPred):
    """Logical 'and' of two OEUnary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, OEUnary InteractionHint Pred func1, OEUnary InteractionHint Pred func2) -> OEAnd InteractionHint"""
        OEUnaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEInteractionHint obj) -> bool"""
        return self._func1(obj) and self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEOrInteractionHint(OEUnaryInteractionHintPred):
    """Logical 'or' of two OEUnary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd InteractionHint"""
        OEUnaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEUnaryInteractionHintPred):
            raise TypeError("Expected a OEUnary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj):
        """__call__(self, OEInteractionHint obj) -> bool"""
        return self._func1(obj) or self._func2(obj)
    def CreateCopy(self):
        """CreateCopy(self) -> OEUnaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()


class OEBinaryNotInteractionHint(OEBinaryInteractionHintPred):
    """Negation of an OEBinary InteractionHint Pred"""
    def __init__(self, func):
        """__init__(self, OEBinary InteractionHint Pred func) -> OENot InteractionHint"""
        OEBinaryInteractionHintPred.__init__(self)
        if not isinstance(func, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func))
        self._func = func
    def __call__(self, obj1, obj2):
        """__call__(self, OEInteractionHint obj1, OEInteractionHint obj2) -> bool"""
        return not self._func(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func).__disown__()

class OEBinaryAndInteractionHint(OEBinaryInteractionHintPred):
    """Logical 'and' of two OEBinary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd InteractionHint"""
        OEBinaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEInteractionHint obj1, OEInteractionHint obj2) -> bool"""
        return self._func1(obj1, obj2) and self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEBinaryOrInteractionHint(OEBinaryInteractionHintPred):
    """Logical 'or' of two OEBinary InteractionHint Preds"""
    def __init__(self, func1, func2):
        """__init__(self, func) -> OEAnd InteractionHint"""
        OEBinaryInteractionHintPred.__init__(self)
        if not isinstance(func1, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func1))
        if not isinstance(func2, OEBinaryInteractionHintPred):
            raise TypeError("Expected a OEBinary InteractionHint Pred, got a %s instead" % repr(func2))
        self._func1 = func1
        self._func2 = func2
    def __call__(self, obj1, obj2):
        """__call__(self, OEInteractionHint obj1, OEInteractionHint obj2) -> bool"""
        return self._func1(obj1, obj2) or self._func2(obj1, obj2)
    def CreateCopy(self):
        """CreateCopy(self) -> OEBinaryFunction"""
        return self.__class__(self._func1, self._func2).__disown__()

class OEInteractionHint(OEBase):
    """Proxy of C++ OEBio::OEInteractionHint 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, rhs: 'OEInteractionHint'):
        """__init__(OEBio::OEInteractionHint self, OEInteractionHint rhs) -> OEInteractionHint"""
        this = _oechem.new_OEInteractionHint(rhs)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHint
    __del__ = lambda self: None

    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEInteractionHint self) -> OEBase"""
        return _oechem.OEInteractionHint_CreateCopy(self)


    def GetDataType(self) -> "void const *":
        """GetDataType(OEInteractionHint self) -> void const *"""
        return _oechem.OEInteractionHint_GetDataType(self)


    def IsDataType(self, arg2: 'void const *') -> "bool":
        """IsDataType(OEInteractionHint self, void const * arg2) -> bool"""
        return _oechem.OEInteractionHint_IsDataType(self, arg2)


    def IsValid(self) -> "bool":
        """IsValid(OEInteractionHint self) -> bool"""
        return _oechem.OEInteractionHint_IsValid(self)


    def IsIntra(self) -> "bool":
        """IsIntra(OEInteractionHint self) -> bool"""
        return _oechem.OEInteractionHint_IsIntra(self)


    def IsInter(self) -> "bool":
        """IsInter(OEInteractionHint self) -> bool"""
        return _oechem.OEInteractionHint_IsInter(self)


    def SetDetails(self, details: 'std::string const &') -> "void":
        """SetDetails(OEInteractionHint self, std::string const & details)"""
        return _oechem.OEInteractionHint_SetDetails(self, details)


    def GetDetails(self) -> "std::string":
        """GetDetails(OEInteractionHint self) -> std::string"""
        return _oechem.OEInteractionHint_GetDetails(self)


    def GetBgnFragment(self) -> "OEBio::OEInteractionHintFragment const *":
        """GetBgnFragment(OEInteractionHint self) -> OEInteractionHintFragment"""
        return _oechem.OEInteractionHint_GetBgnFragment(self)


    def GetEndFragment(self) -> "OEBio::OEInteractionHintFragment const *":
        """GetEndFragment(OEInteractionHint self) -> OEInteractionHintFragment"""
        return _oechem.OEInteractionHint_GetEndFragment(self)


    def GetFragment(self, arg2: 'OEInteractionHintComponentTypeBase') -> "OEBio::OEInteractionHintFragment const *":
        """GetFragment(OEInteractionHint self, OEInteractionHintComponentTypeBase arg2) -> OEInteractionHintFragment"""
        return _oechem.OEInteractionHint_GetFragment(self, arg2)


    def GetInteractionType(self) -> "OEBio::OEInteractionHintTypeBase const &":
        """GetInteractionType(OEInteractionHint self) -> OEInteractionHintTypeBase"""
        return _oechem.OEInteractionHint_GetInteractionType(self)


    def SetWeight(self, arg2: 'double') -> "void":
        """SetWeight(OEInteractionHint self, double arg2)"""
        return _oechem.OEInteractionHint_SetWeight(self, arg2)


    def GetWeight(self) -> "double":
        """GetWeight(OEInteractionHint self) -> double"""
        return _oechem.OEInteractionHint_GetWeight(self)

OEInteractionHint_swigregister = _oechem.OEInteractionHint_swigregister
OEInteractionHint_swigregister(OEInteractionHint)

class OEInteractionHintIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> 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).OEBio::OEInteractionHint)> self) -> OEInteractionHintIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> self, OEInteractionHintIter rhs) -> OEInteractionHintIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> self, OESystem::OEIterBase< OEBio::OEInteractionHint const > * rhs) -> OEInteractionHintIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEInteractionHint)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEInteractionHint const >::NonConstA > * rhs) -> OEInteractionHintIter
        """
        this = _oechem.new_OEInteractionHintIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEInteractionHint const > *":
        """Copy(OEInteractionHintIter self) -> OESystem::OEIterBase< OEBio::OEInteractionHint const > *"""
        return _oechem.OEInteractionHintIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEInteractionHintIter self, OESystem::OEIterBase< OEBio::OEInteractionHint const > * ib)
        Push(OEInteractionHintIter self, OEInteractionHintIter iter)
        """
        return _oechem.OEInteractionHintIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEInteractionHint const,OEBio::OEInteractionHint const > const &') -> "void":
        """Sort(OEInteractionHintIter self, OESystem::OEBinaryPredicate< OEBio::OEInteractionHint const,OEBio::OEInteractionHint const > const & sort_criterion)"""
        return _oechem.OEInteractionHintIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """ToFirst(OEInteractionHintIter self) -> OEInteractionHintIter"""
        return _oechem.OEInteractionHintIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """ToLast(OEInteractionHintIter self) -> OEInteractionHintIter"""
        return _oechem.OEInteractionHintIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEInteractionHint const &":
        """__ref__(OEInteractionHintIter self) -> OEInteractionHint"""
        return _oechem.OEInteractionHintIter___ref__(self)


    def IsValid(self):
      return _oechem.OEInteractionHintIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEInteractionHintIter self) -> PyObject *"""
        return _oechem.OEInteractionHintIter_next(self)


    def Target(self) -> "OEBio::OEInteractionHint const &":
        """Target(OEInteractionHintIter self) -> OEInteractionHint"""
        return _oechem.OEInteractionHintIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """
        Next(OEInteractionHintIter self) -> OEInteractionHintIter
        Next(OEInteractionHintIter self, int i) -> OEInteractionHintIter
        """
        return _oechem.OEInteractionHintIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEInteractionHint const > &":
        """
        Prev(OEInteractionHintIter self) -> OEInteractionHintIter
        Prev(OEInteractionHintIter self, int i) -> OEInteractionHintIter
        """
        return _oechem.OEInteractionHintIter_Prev(self, *args)

OEInteractionHintIter_swigregister = _oechem.OEInteractionHintIter_swigregister
OEInteractionHintIter_swigregister(OEInteractionHintIter)

class OEHasInteractionHintType(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEHasInteractionHintType 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__(OEBio::OEHasInteractionHintType self, OEInteractionHintTypeBase itype) -> OEHasInteractionHintType
        __init__(OEBio::OEHasInteractionHintType self, OEHasInteractionHintType rhs) -> OEHasInteractionHintType
        """
        this = _oechem.new_OEHasInteractionHintType(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEHasInteractionHintType self, OEInteractionHint i) -> bool"""
        return _oechem.OEHasInteractionHintType___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEHasInteractionHintType self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEHasInteractionHintType_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasInteractionHintType
    __del__ = lambda self: None
OEHasInteractionHintType_swigregister = _oechem.OEHasInteractionHintType_swigregister
OEHasInteractionHintType_swigregister(OEHasInteractionHintType)

class OEHasInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEHasInteractionHint 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__(OEBio::OEHasInteractionHint self, OEAtomBase arg2) -> OEHasInteractionHint
        __init__(OEBio::OEHasInteractionHint self, OEHasInteractionHint rhs) -> OEHasInteractionHint
        """
        this = _oechem.new_OEHasInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEHasInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEHasInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEHasInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEHasInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasInteractionHint
    __del__ = lambda self: None
OEHasInteractionHint_swigregister = _oechem.OEHasInteractionHint_swigregister
OEHasInteractionHint_swigregister(OEHasInteractionHint)

class OEIsContactInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsContactInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsContactInteractionHint self) -> OEIsContactInteractionHint"""
        this = _oechem.new_OEIsContactInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsContactInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsContactInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsContactInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsContactInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsContactInteractionHint
    __del__ = lambda self: None
OEIsContactInteractionHint_swigregister = _oechem.OEIsContactInteractionHint_swigregister
OEIsContactInteractionHint_swigregister(OEIsContactInteractionHint)

class OEIsHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsHBondInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsHBondInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsHBondInteractionHint self) -> OEIsHBondInteractionHint"""
        this = _oechem.new_OEIsHBondInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsHBondInteractionHint
    __del__ = lambda self: None
OEIsHBondInteractionHint_swigregister = _oechem.OEIsHBondInteractionHint_swigregister
OEIsHBondInteractionHint_swigregister(OEIsHBondInteractionHint)

class OEIsIntermolecularHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntermolecularHBondInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntermolecularHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntermolecularHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntermolecularHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntermolecularHBondInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsIntermolecularHBondInteractionHint self) -> OEIsIntermolecularHBondInteractionHint"""
        this = _oechem.new_OEIsIntermolecularHBondInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntermolecularHBondInteractionHint
    __del__ = lambda self: None
OEIsIntermolecularHBondInteractionHint_swigregister = _oechem.OEIsIntermolecularHBondInteractionHint_swigregister
OEIsIntermolecularHBondInteractionHint_swigregister(OEIsIntermolecularHBondInteractionHint)

class OEIsIntramolecularHBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntramolecularHBondInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntramolecularHBondInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntramolecularHBondInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntramolecularHBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntramolecularHBondInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsIntramolecularHBondInteractionHint self) -> OEIsIntramolecularHBondInteractionHint"""
        this = _oechem.new_OEIsIntramolecularHBondInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntramolecularHBondInteractionHint
    __del__ = lambda self: None
OEIsIntramolecularHBondInteractionHint_swigregister = _oechem.OEIsIntramolecularHBondInteractionHint_swigregister
OEIsIntramolecularHBondInteractionHint_swigregister(OEIsIntramolecularHBondInteractionHint)

class OEIsChelatorInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsChelatorInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsChelatorInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsChelatorInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsChelatorInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsChelatorInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsChelatorInteractionHint self) -> OEIsChelatorInteractionHint"""
        this = _oechem.new_OEIsChelatorInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsChelatorInteractionHint
    __del__ = lambda self: None
OEIsChelatorInteractionHint_swigregister = _oechem.OEIsChelatorInteractionHint_swigregister
OEIsChelatorInteractionHint_swigregister(OEIsChelatorInteractionHint)

class OEIsIntermolecularChelatorInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntermolecularChelatorInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntermolecularChelatorInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntermolecularChelatorInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntermolecularChelatorInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntermolecularChelatorInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsIntermolecularChelatorInteractionHint self) -> OEIsIntermolecularChelatorInteractionHint"""
        this = _oechem.new_OEIsIntermolecularChelatorInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntermolecularChelatorInteractionHint
    __del__ = lambda self: None
OEIsIntermolecularChelatorInteractionHint_swigregister = _oechem.OEIsIntermolecularChelatorInteractionHint_swigregister
OEIsIntermolecularChelatorInteractionHint_swigregister(OEIsIntermolecularChelatorInteractionHint)

class OEIsIntramolecularChelatorInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntramolecularChelatorInteractionHint class."""

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

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntramolecularChelatorInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsIntramolecularChelatorInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntramolecularChelatorInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntramolecularChelatorInteractionHint_CreateCopy(self)


    def __init__(self):
        """__init__(OEBio::OEIsIntramolecularChelatorInteractionHint self) -> OEIsIntramolecularChelatorInteractionHint"""
        this = _oechem.new_OEIsIntramolecularChelatorInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsIntramolecularChelatorInteractionHint
    __del__ = lambda self: None
OEIsIntramolecularChelatorInteractionHint_swigregister = _oechem.OEIsIntramolecularChelatorInteractionHint_swigregister
OEIsIntramolecularChelatorInteractionHint_swigregister(OEIsIntramolecularChelatorInteractionHint)

class OEIsCovalentInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsCovalentInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsCovalentInteractionHint self) -> OEIsCovalentInteractionHint"""
        this = _oechem.new_OEIsCovalentInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsCovalentInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsCovalentInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsCovalentInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsCovalentInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsCovalentInteractionHint
    __del__ = lambda self: None
OEIsCovalentInteractionHint_swigregister = _oechem.OEIsCovalentInteractionHint_swigregister
OEIsCovalentInteractionHint_swigregister(OEIsCovalentInteractionHint)

class OEIsClashInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsClashInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsClashInteractionHint self) -> OEIsClashInteractionHint"""
        this = _oechem.new_OEIsClashInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, c: 'OEInteractionHint') -> "bool":
        """__call__(OEIsClashInteractionHint self, OEInteractionHint c) -> bool"""
        return _oechem.OEIsClashInteractionHint___call__(self, c)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsClashInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsClashInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsClashInteractionHint
    __del__ = lambda self: None
OEIsClashInteractionHint_swigregister = _oechem.OEIsClashInteractionHint_swigregister
OEIsClashInteractionHint_swigregister(OEIsClashInteractionHint)

class OEIsSaltBridgeInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsSaltBridgeInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsSaltBridgeInteractionHint self) -> OEIsSaltBridgeInteractionHint"""
        this = _oechem.new_OEIsSaltBridgeInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsSaltBridgeInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsSaltBridgeInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsSaltBridgeInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsSaltBridgeInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsSaltBridgeInteractionHint
    __del__ = lambda self: None
OEIsSaltBridgeInteractionHint_swigregister = _oechem.OEIsSaltBridgeInteractionHint_swigregister
OEIsSaltBridgeInteractionHint_swigregister(OEIsSaltBridgeInteractionHint)

class OEIsStackingInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsStackingInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsStackingInteractionHint self) -> OEIsStackingInteractionHint"""
        this = _oechem.new_OEIsStackingInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsStackingInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsStackingInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsStackingInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsStackingInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsStackingInteractionHint
    __del__ = lambda self: None
OEIsStackingInteractionHint_swigregister = _oechem.OEIsStackingInteractionHint_swigregister
OEIsStackingInteractionHint_swigregister(OEIsStackingInteractionHint)

class OEIsCationPiInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsCationPiInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsCationPiInteractionHint self) -> OEIsCationPiInteractionHint"""
        this = _oechem.new_OEIsCationPiInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsCationPiInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsCationPiInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsCationPiInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsCationPiInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsCationPiInteractionHint
    __del__ = lambda self: None
OEIsCationPiInteractionHint_swigregister = _oechem.OEIsCationPiInteractionHint_swigregister
OEIsCationPiInteractionHint_swigregister(OEIsCationPiInteractionHint)

class OEIsHalogenBondInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsHalogenBondInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsHalogenBondInteractionHint self) -> OEIsHalogenBondInteractionHint"""
        this = _oechem.new_OEIsHalogenBondInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsHalogenBondInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsHalogenBondInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsHalogenBondInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsHalogenBondInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsHalogenBondInteractionHint
    __del__ = lambda self: None
OEIsHalogenBondInteractionHint_swigregister = _oechem.OEIsHalogenBondInteractionHint_swigregister
OEIsHalogenBondInteractionHint_swigregister(OEIsHalogenBondInteractionHint)

class OEIsInterInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsInterInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsInterInteractionHint self) -> OEIsInterInteractionHint"""
        this = _oechem.new_OEIsInterInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsInterInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsInterInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsInterInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsInterInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsInterInteractionHint
    __del__ = lambda self: None
OEIsInterInteractionHint_swigregister = _oechem.OEIsInterInteractionHint_swigregister
OEIsInterInteractionHint_swigregister(OEIsInterInteractionHint)

class OEIsIntraInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsIntraInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsIntraInteractionHint self) -> OEIsIntraInteractionHint"""
        this = _oechem.new_OEIsIntraInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsIntraInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsIntraInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsIntraInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsIntraInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsIntraInteractionHint
    __del__ = lambda self: None
OEIsIntraInteractionHint_swigregister = _oechem.OEIsIntraInteractionHint_swigregister
OEIsIntraInteractionHint_swigregister(OEIsIntraInteractionHint)

class OEIsUnpairedLigandInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsUnpairedLigandInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsUnpairedLigandInteractionHint self) -> OEIsUnpairedLigandInteractionHint"""
        this = _oechem.new_OEIsUnpairedLigandInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsUnpairedLigandInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsUnpairedLigandInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsUnpairedLigandInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsUnpairedLigandInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsUnpairedLigandInteractionHint
    __del__ = lambda self: None
OEIsUnpairedLigandInteractionHint_swigregister = _oechem.OEIsUnpairedLigandInteractionHint_swigregister
OEIsUnpairedLigandInteractionHint_swigregister(OEIsUnpairedLigandInteractionHint)

class OEIsUnpairedProteinInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEIsUnpairedProteinInteractionHint class."""

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

    def __init__(self):
        """__init__(OEBio::OEIsUnpairedProteinInteractionHint self) -> OEIsUnpairedProteinInteractionHint"""
        this = _oechem.new_OEIsUnpairedProteinInteractionHint()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEIsUnpairedProteinInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEIsUnpairedProteinInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEIsUnpairedProteinInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEIsUnpairedProteinInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEIsUnpairedProteinInteractionHint
    __del__ = lambda self: None
OEIsUnpairedProteinInteractionHint_swigregister = _oechem.OEIsUnpairedProteinInteractionHint_swigregister
OEIsUnpairedProteinInteractionHint_swigregister(OEIsUnpairedProteinInteractionHint)

class OEHasResidueInteractionHint(OEUnaryInteractionHintPred):
    """Proxy of C++ OEBio::OEHasResidueInteractionHint 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__(OEBio::OEHasResidueInteractionHint self, OEResidue arg2) -> OEHasResidueInteractionHint
        __init__(OEBio::OEHasResidueInteractionHint self, OEResidue arg2, OEInteractionHintComponentTypeBase ctype) -> OEHasResidueInteractionHint
        __init__(OEBio::OEHasResidueInteractionHint self, OEHasResidueInteractionHint rhs) -> OEHasResidueInteractionHint
        """
        this = _oechem.new_OEHasResidueInteractionHint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, i: 'OEInteractionHint') -> "bool":
        """__call__(OEHasResidueInteractionHint self, OEInteractionHint i) -> bool"""
        return _oechem.OEHasResidueInteractionHint___call__(self, i)


    def CreateCopy(self) -> "OESystem::OEUnaryFunction< OEBio::OEInteractionHint,bool,true,true > *":
        """CreateCopy(OEHasResidueInteractionHint self) -> OEUnaryInteractionHintBoolFunc"""
        return _oechem.OEHasResidueInteractionHint_CreateCopy(self)

    __swig_destroy__ = _oechem.delete_OEHasResidueInteractionHint
    __del__ = lambda self: None
OEHasResidueInteractionHint_swigregister = _oechem.OEHasResidueInteractionHint_swigregister
OEHasResidueInteractionHint_swigregister(OEHasResidueInteractionHint)

class OEInteractionHintContainer(object):
    """Proxy of C++ OEBio::OEInteractionHintContainer 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__(OEBio::OEInteractionHintContainer self) -> OEInteractionHintContainer
        __init__(OEBio::OEInteractionHintContainer self, OEMolBase protein, OEMolBase ligand) -> OEInteractionHintContainer
        """
        this = _oechem.new_OEInteractionHintContainer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEInteractionHintContainer
    __del__ = lambda self: None

    def AddMolecule(self, mol: 'OEMolBase', itype: 'OEInteractionHintComponentTypeBase') -> "OEChem::OEMolBase const *":
        """AddMolecule(OEInteractionHintContainer self, OEMolBase mol, OEInteractionHintComponentTypeBase itype) -> OEMolBase"""
        return _oechem.OEInteractionHintContainer_AddMolecule(self, mol, itype)


    def GetMolecule(self, itype: 'OEInteractionHintComponentTypeBase') -> "OEChem::OEMolBase const *":
        """GetMolecule(OEInteractionHintContainer self, OEInteractionHintComponentTypeBase itype) -> OEMolBase"""
        return _oechem.OEInteractionHintContainer_GetMolecule(self, itype)


    def GetMolecules(self, *args) -> "OESystem::OEIterBase< OEChem::OEMolBase const > *":
        """
        GetMolecules(OEInteractionHintContainer self) -> OESystem::OEIterBase< OEChem::OEMolBase const >
        GetMolecules(OEInteractionHintContainer self, OEInteractionHintComponentTypeBase itype) -> OESystem::OEIterBase< OEChem::OEMolBase const > *
        """
        return _oechem.OEInteractionHintContainer_GetMolecules(self, *args)


    def HasInteraction(self, pred: 'OEUnaryInteractionHintPred') -> "bool":
        """HasInteraction(OEInteractionHintContainer self, OEUnaryInteractionHintPred pred) -> bool"""
        return _oechem.OEInteractionHintContainer_HasInteraction(self, pred)


    def GetInteractions(self, *args) -> "OESystem::OEIterBase< OEBio::OEInteractionHint const > *":
        """
        GetInteractions(OEInteractionHintContainer self) -> OESystem::OEIterBase< OEBio::OEInteractionHint const >
        GetInteractions(OEInteractionHintContainer self, OEUnaryInteractionHintPred pred) -> OESystem::OEIterBase< OEBio::OEInteractionHint const > *
        """
        return _oechem.OEInteractionHintContainer_GetInteractions(self, *args)


    def DeleteInteraction(self, arg2: 'OEInteractionHint') -> "bool":
        """DeleteInteraction(OEInteractionHintContainer self, OEInteractionHint arg2) -> bool"""
        return _oechem.OEInteractionHintContainer_DeleteInteraction(self, arg2)


    def IsValid(self) -> "bool":
        """IsValid(OEInteractionHintContainer self) -> bool"""
        return _oechem.OEInteractionHintContainer_IsValid(self)


    def IsValid(self):
      return _oechem.OEInteractionHintContainer___nonzero__(self)



    def GetTitle(self) -> "std::string const &":
        """GetTitle(OEInteractionHintContainer self) -> std::string const &"""
        return _oechem.OEInteractionHintContainer_GetTitle(self)


    def SetTitle(self, title: 'std::string const &') -> "void":
        """SetTitle(OEInteractionHintContainer self, std::string const & title)"""
        return _oechem.OEInteractionHintContainer_SetTitle(self, title)


    def NumMolecules(self) -> "unsigned int":
        """NumMolecules(OEInteractionHintContainer self) -> unsigned int"""
        return _oechem.OEInteractionHintContainer_NumMolecules(self)


    def NumFragments(self) -> "unsigned int":
        """NumFragments(OEInteractionHintContainer self) -> unsigned int"""
        return _oechem.OEInteractionHintContainer_NumFragments(self)


    def NumInteractions(self, *args) -> "unsigned int":
        """
        NumInteractions(OEInteractionHintContainer self) -> unsigned int
        NumInteractions(OEInteractionHintContainer self, OEUnaryInteractionHintPred pred) -> unsigned int
        """
        return _oechem.OEInteractionHintContainer_NumInteractions(self, *args)

OEInteractionHintContainer_swigregister = _oechem.OEInteractionHintContainer_swigregister
OEInteractionHintContainer_swigregister(OEInteractionHintContainer)


def OEIsValidActiveSite(*args) -> "bool":
    """
    OEIsValidActiveSite(OEFragmentNetwork asite) -> bool
    OEIsValidActiveSite(OEInteractionHintContainer asite) -> bool
    """
    return _oechem.OEIsValidActiveSite(*args)

def OEGetInteractions(*args) -> "OESystem::OEIterBase< OEBio::OEInteractionHint const > *":
    """
    OEGetInteractions(OEMolBase mol, OEInteractionHintContainer arg2) -> OESystem::OEIterBase< OEBio::OEInteractionHint const >
    OEGetInteractions(OEAtomBase atom, OEInteractionHintContainer arg2) -> OESystem::OEIterBase< OEBio::OEInteractionHint const > *
    """
    return _oechem.OEGetInteractions(*args)

def OESetInteractionsHintSerializationIds(mol: 'OEMolBase') -> "void":
    """OESetInteractionsHintSerializationIds(OEMolBase mol)"""
    return _oechem.OESetInteractionsHintSerializationIds(mol)

def OEDeleteInteractionsHintSerializationIds(mol: 'OEMolBase') -> "void":
    """OEDeleteInteractionsHintSerializationIds(OEMolBase mol)"""
    return _oechem.OEDeleteInteractionsHintSerializationIds(mol)

def OEDeleteInteractionsHintSerializationData(mol: 'OEMolBase') -> "void":
    """OEDeleteInteractionsHintSerializationData(OEMolBase mol)"""
    return _oechem.OEDeleteInteractionsHintSerializationData(mol)

def OESerializeInteractionsHintContainer(protein: 'OEMolBase', ligand: 'OEMolBase', asite: 'OEInteractionHintContainer') -> "bool":
    """OESerializeInteractionsHintContainer(OEMolBase protein, OEMolBase ligand, OEInteractionHintContainer asite) -> bool"""
    return _oechem.OESerializeInteractionsHintContainer(protein, ligand, asite)

def OEConstructInteractionHintContainer(asite: 'OEInteractionHintContainer', protein: 'OEMolBase', ligand: 'OEMolBase') -> "bool":
    """OEConstructInteractionHintContainer(OEInteractionHintContainer asite, OEMolBase protein, OEMolBase ligand) -> bool"""
    return _oechem.OEConstructInteractionHintContainer(asite, protein, ligand)
class OEPerceiveInteractionOptions(object):
    """Proxy of C++ OEBio::OEPerceiveInteractionOptions class."""

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

    def __init__(self):
        """__init__(OEBio::OEPerceiveInteractionOptions self) -> OEPerceiveInteractionOptions"""
        this = _oechem.new_OEPerceiveInteractionOptions()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def SetMinCovalentFraction(self, frac: 'double') -> "void":
        """SetMinCovalentFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMinCovalentFraction(self, frac)


    def GetMinCovalentFraction(self) -> "double":
        """GetMinCovalentFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMinCovalentFraction(self)


    def SetMaxCovalentFraction(self, frac: 'double') -> "void":
        """SetMaxCovalentFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxCovalentFraction(self, frac)


    def GetMaxCovalentFraction(self) -> "double":
        """GetMaxCovalentFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxCovalentFraction(self)


    def SetMinContactFraction(self, frac: 'double') -> "void":
        """SetMinContactFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMinContactFraction(self, frac)


    def GetMinContactFraction(self) -> "double":
        """GetMinContactFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMinContactFraction(self)


    def SetMaxContactFraction(self, frac: 'double') -> "void":
        """SetMaxContactFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxContactFraction(self, frac)


    def GetMaxContactFraction(self) -> "double":
        """GetMaxContactFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxContactFraction(self)


    def SetMinHBondContactFraction(self, frac: 'double') -> "void":
        """SetMinHBondContactFraction(OEPerceiveInteractionOptions self, double frac)"""
        return _oechem.OEPerceiveInteractionOptions_SetMinHBondContactFraction(self, frac)


    def GetMinHBondContactFraction(self) -> "double":
        """GetMinHBondContactFraction(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMinHBondContactFraction(self)


    def SetMaxPiStackDistance(self, dist: 'double') -> "void":
        """SetMaxPiStackDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxPiStackDistance(self, dist)


    def GetMaxPiStackDistance(self) -> "double":
        """GetMaxPiStackDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxPiStackDistance(self)


    def SetMaxPiStackAngle(self, radians: 'double') -> "void":
        """SetMaxPiStackAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxPiStackAngle(self, radians)


    def GetMaxPiStackAngle(self) -> "double":
        """GetMaxPiStackAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxPiStackAngle(self)


    def SetMaxTStackDistance(self, dist: 'double') -> "void":
        """SetMaxTStackDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxTStackDistance(self, dist)


    def GetMaxTStackDistance(self) -> "double":
        """GetMaxTStackDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxTStackDistance(self)


    def SetMaxTStackAngle(self, radians: 'double') -> "void":
        """SetMaxTStackAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxTStackAngle(self, radians)


    def GetMaxTStackAngle(self) -> "double":
        """GetMaxTStackAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxTStackAngle(self)


    def SetMaxHBondDistance(self, dist: 'double') -> "void":
        """SetMaxHBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxHBondDistance(self, dist)


    def GetMaxHBondDistance(self) -> "double":
        """GetMaxHBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxHBondDistance(self)


    def SetMaxChargeAidedHBondDistance(self, dist: 'double') -> "void":
        """SetMaxChargeAidedHBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxChargeAidedHBondDistance(self, dist)


    def GetMaxChargeAidedHBondDistance(self) -> "double":
        """GetMaxChargeAidedHBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxChargeAidedHBondDistance(self)


    def SetMaxDonorAngle(self, radians: 'double') -> "void":
        """SetMaxDonorAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxDonorAngle(self, radians)


    def GetMaxDonorAngle(self) -> "double":
        """GetMaxDonorAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxDonorAngle(self)


    def SetMaxAcceptorAngle(self, radians: 'double') -> "void":
        """SetMaxAcceptorAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxAcceptorAngle(self, radians)


    def GetMaxAcceptorAngle(self) -> "double":
        """GetMaxAcceptorAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxAcceptorAngle(self)


    def SetMaxMetalBondDistance(self, dist: 'double') -> "void":
        """SetMaxMetalBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxMetalBondDistance(self, dist)


    def GetMaxMetalBondDistance(self) -> "double":
        """GetMaxMetalBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxMetalBondDistance(self)


    def SetMaxSaltBridgeDistance(self, dist: 'double') -> "void":
        """SetMaxSaltBridgeDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxSaltBridgeDistance(self, dist)


    def GetMaxSaltBridgeDistance(self) -> "double":
        """GetMaxSaltBridgeDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxSaltBridgeDistance(self)


    def GetExtendedSaltBridgeDistance(self) -> "double":
        """GetExtendedSaltBridgeDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetExtendedSaltBridgeDistance(self)


    def SetMaxCationPiDistance(self, dist: 'double') -> "void":
        """SetMaxCationPiDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxCationPiDistance(self, dist)


    def GetMaxCationPiDistance(self) -> "double":
        """GetMaxCationPiDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxCationPiDistance(self)


    def SetMaxCationPiAngle(self, radians: 'double') -> "void":
        """SetMaxCationPiAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxCationPiAngle(self, radians)


    def GetMaxCationPiAngle(self) -> "double":
        """GetMaxCationPiAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxCationPiAngle(self)


    def SetMaxHalogenBondDistance(self, dist: 'double') -> "void":
        """SetMaxHalogenBondDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxHalogenBondDistance(self, dist)


    def GetMaxHalogenBondDistance(self) -> "double":
        """GetMaxHalogenBondDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxHalogenBondDistance(self)


    def SetMaxHalogenAngle(self, radians: 'double') -> "void":
        """SetMaxHalogenAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxHalogenAngle(self, radians)


    def GetMaxHalogenAngle(self) -> "double":
        """GetMaxHalogenAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxHalogenAngle(self)


    def SetMaxUnpairedDistance(self, dist: 'double') -> "void":
        """SetMaxUnpairedDistance(OEPerceiveInteractionOptions self, double dist)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxUnpairedDistance(self, dist)


    def GetMaxUnpairedDistance(self) -> "double":
        """GetMaxUnpairedDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxUnpairedDistance(self)


    def SetMaxUnpairedAngle(self, radians: 'double') -> "void":
        """SetMaxUnpairedAngle(OEPerceiveInteractionOptions self, double radians)"""
        return _oechem.OEPerceiveInteractionOptions_SetMaxUnpairedAngle(self, radians)


    def GetMaxUnpairedAngle(self) -> "double":
        """GetMaxUnpairedAngle(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxUnpairedAngle(self)


    def GetMaxAtomPairDistance(self) -> "double":
        """GetMaxAtomPairDistance(OEPerceiveInteractionOptions self) -> double"""
        return _oechem.OEPerceiveInteractionOptions_GetMaxAtomPairDistance(self)

    __swig_destroy__ = _oechem.delete_OEPerceiveInteractionOptions
    __del__ = lambda self: None
OEPerceiveInteractionOptions_swigregister = _oechem.OEPerceiveInteractionOptions_swigregister
OEPerceiveInteractionOptions_swigregister(OEPerceiveInteractionOptions)


def OEPerceiveInteractionHints(*args) -> "bool":
    """
    OEPerceiveInteractionHints(OEInteractionHintContainer asite) -> bool
    OEPerceiveInteractionHints(OEInteractionHintContainer asite, OEPerceiveInteractionOptions opts) -> bool
    """
    return _oechem.OEPerceiveInteractionHints(*args)
class OEHierResidue(object):
    """Proxy of C++ OEBio::OEHierResidue 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__ = _oechem.delete_OEHierResidue
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierResidue self, OEBio::OEHierResImpl * i) -> OEHierResidue
        __init__(OEBio::OEHierResidue self) -> OEHierResidue
        __init__(OEBio::OEHierResidue self, OEHierResidue arg2) -> OEHierResidue
        """
        this = _oechem.new_OEHierResidue(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierResImpl *":
        """GetImpl(OEHierResidue self) -> OEBio::OEHierResImpl *"""
        return _oechem.OEHierResidue_GetImpl(self)


    def GetResidueNumber(self) -> "int":
        """GetResidueNumber(OEHierResidue self) -> int"""
        return _oechem.OEHierResidue_GetResidueNumber(self)


    def GetResidueName(self) -> "char const *":
        """GetResidueName(OEHierResidue self) -> char const *"""
        return _oechem.OEHierResidue_GetResidueName(self)


    def GetOEResidue(self) -> "OEChem::OEResidue const &":
        """GetOEResidue(OEHierResidue self) -> OEResidue"""
        return _oechem.OEHierResidue_GetOEResidue(self)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEHierResidue self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEHierResidue self) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEHierResidue_GetAtoms(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierResidue self, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierResidue self, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierResidue_GetAtom(self, *args)

OEHierResidue_swigregister = _oechem.OEHierResidue_swigregister
OEHierResidue_swigregister(OEHierResidue)

class OEHierFragment(object):
    """Proxy of C++ OEBio::OEHierFragment 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__ = _oechem.delete_OEHierFragment
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierFragment self, OEBio::OEHierFragImpl * i) -> OEHierFragment
        __init__(OEBio::OEHierFragment self) -> OEHierFragment
        __init__(OEBio::OEHierFragment self, OEHierFragment arg2) -> OEHierFragment
        """
        this = _oechem.new_OEHierFragment(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierFragImpl *":
        """GetImpl(OEHierFragment self) -> OEBio::OEHierFragImpl *"""
        return _oechem.OEHierFragment_GetImpl(self)


    def GetFragmentNumber(self) -> "int":
        """GetFragmentNumber(OEHierFragment self) -> int"""
        return _oechem.OEHierFragment_GetFragmentNumber(self)


    def GetOEResidue(self) -> "OEChem::OEResidue const &":
        """GetOEResidue(OEHierFragment self) -> OEResidue"""
        return _oechem.OEHierFragment_GetOEResidue(self)


    def GetResidues(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierResidue const > *":
        """
        GetResidues(OEHierFragment self) -> OESystem::OEIterBase< OEBio::OEHierResidue >
        GetResidues(OEHierFragment self) -> OESystem::OEIterBase< OEBio::OEHierResidue const > *
        """
        return _oechem.OEHierFragment_GetResidues(self, *args)


    def GetResidue(self, *args) -> "OEBio::OEHierResidue const &":
        """
        GetResidue(OEHierFragment self, char const * resName, int resIdx) -> OEHierResidue
        GetResidue(OEHierFragment self, char const * resName, int resIdx) -> OEHierResidue
        """
        return _oechem.OEHierFragment_GetResidue(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierFragment self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierFragment self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierFragment_GetAtom(self, *args)

OEHierFragment_swigregister = _oechem.OEHierFragment_swigregister
OEHierFragment_swigregister(OEHierFragment)

class OEHierChain(object):
    """Proxy of C++ OEBio::OEHierChain 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__ = _oechem.delete_OEHierChain
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierChain self, OEBio::OEHierChainImpl * i) -> OEHierChain
        __init__(OEBio::OEHierChain self) -> OEHierChain
        __init__(OEBio::OEHierChain self, OEHierChain arg2) -> OEHierChain
        """
        this = _oechem.new_OEHierChain(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierChainImpl *":
        """GetImpl(OEHierChain self) -> OEBio::OEHierChainImpl *"""
        return _oechem.OEHierChain_GetImpl(self)


    def GetChainID(self) -> "char":
        """GetChainID(OEHierChain self) -> char"""
        return _oechem.OEHierChain_GetChainID(self)


    def GetOEResidue(self) -> "OEChem::OEResidue const &":
        """GetOEResidue(OEHierChain self) -> OEResidue"""
        return _oechem.OEHierChain_GetOEResidue(self)


    def GetFragments(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierFragment const > *":
        """
        GetFragments(OEHierChain self) -> OESystem::OEIterBase< OEBio::OEHierFragment >
        GetFragments(OEHierChain self) -> OESystem::OEIterBase< OEBio::OEHierFragment const > *
        """
        return _oechem.OEHierChain_GetFragments(self, *args)


    def GetResidue(self, *args) -> "OEBio::OEHierResidue const &":
        """
        GetResidue(OEHierChain self, char const * resName, int resIdx) -> OEHierResidue
        GetResidue(OEHierChain self, char const * resName, int resIdx) -> OEHierResidue
        """
        return _oechem.OEHierChain_GetResidue(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierChain self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierChain self, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierChain_GetAtom(self, *args)

OEHierChain_swigregister = _oechem.OEHierChain_swigregister
OEHierChain_swigregister(OEHierChain)

class OEHierView(object):
    """Proxy of C++ OEBio::OEHierView 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__ = _oechem.delete_OEHierView
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEHierView self, OEBio::OEHierViewImpl * i) -> OEHierView
        __init__(OEBio::OEHierView self) -> OEHierView
        __init__(OEBio::OEHierView self, OEHierView arg2) -> OEHierView
        __init__(OEBio::OEHierView self, OEMolBase arg2, unsigned int assume) -> OEHierView
        __init__(OEBio::OEHierView self, OEMolBase arg2) -> OEHierView
        """
        this = _oechem.new_OEHierView(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetImpl(self) -> "OEBio::OEHierViewImpl *":
        """GetImpl(OEHierView self) -> OEBio::OEHierViewImpl *"""
        return _oechem.OEHierView_GetImpl(self)


    def GetChains(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierChain const > *":
        """
        GetChains(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierChain >
        GetChains(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierChain const > *
        """
        return _oechem.OEHierView_GetChains(self, *args)


    def GetFragments(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierFragment const > *":
        """
        GetFragments(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierFragment >
        GetFragments(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierFragment const > *
        """
        return _oechem.OEHierView_GetFragments(self, *args)


    def GetResidues(self, *args) -> "OESystem::OEIterBase< OEBio::OEHierResidue const > *":
        """
        GetResidues(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierResidue >
        GetResidues(OEHierView self) -> OESystem::OEIterBase< OEBio::OEHierResidue const > *
        """
        return _oechem.OEHierView_GetResidues(self, *args)


    def GetAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase const > *":
        """
        GetAtoms(OEHierView self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAtoms(OEHierView self) -> OESystem::OEIterBase< OEChem::OEAtomBase const > *
        """
        return _oechem.OEHierView_GetAtoms(self, *args)


    def GetResidue(self, *args) -> "OEBio::OEHierResidue const &":
        """
        GetResidue(OEHierView self, char chainID, char const * resName, int resIdx) -> OEHierResidue
        GetResidue(OEHierView self, char chainID, char const * resName, int resIdx) -> OEHierResidue
        """
        return _oechem.OEHierView_GetResidue(self, *args)


    def GetAtom(self, *args) -> "OEChem::OEAtomBase const *":
        """
        GetAtom(OEHierView self, char chainID, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        GetAtom(OEHierView self, char chainID, char const * resName, int resIdx, unsigned int pdbAtomIdx) -> OEAtomBase
        """
        return _oechem.OEHierView_GetAtom(self, *args)

OEHierView_swigregister = _oechem.OEHierView_swigregister
OEHierView_swigregister(OEHierView)

class OEHierResidueIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEHierResidue)> 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<(OEBio::OEHierResidue)> self) -> OEHierResidueIter
        __init__(OESystem::OEIter<(OEBio::OEHierResidue)> self, OEHierResidueIter rhs) -> OEHierResidueIter
        __init__(OESystem::OEIter<(OEBio::OEHierResidue)> self, OESystem::OEIterBase< OEBio::OEHierResidue > * rhs) -> OEHierResidueIter
        __init__(OESystem::OEIter<(OEBio::OEHierResidue)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierResidue >::NonConstA > * rhs) -> OEHierResidueIter
        """
        this = _oechem.new_OEHierResidueIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHierResidueIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierResidue > *":
        """Copy(OEHierResidueIter self) -> OESystem::OEIterBase< OEBio::OEHierResidue > *"""
        return _oechem.OEHierResidueIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEHierResidueIter self, OESystem::OEIterBase< OEBio::OEHierResidue > * ib)
        Push(OEHierResidueIter self, OEHierResidueIter iter)
        """
        return _oechem.OEHierResidueIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierResidue,OEBio::OEHierResidue > const &') -> "void":
        """Sort(OEHierResidueIter self, OESystem::OEBinaryPredicate< OEBio::OEHierResidue,OEBio::OEHierResidue > const & sort_criterion)"""
        return _oechem.OEHierResidueIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """ToFirst(OEHierResidueIter self) -> OEHierResidueIter"""
        return _oechem.OEHierResidueIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """ToLast(OEHierResidueIter self) -> OEHierResidueIter"""
        return _oechem.OEHierResidueIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierResidue &":
        """__ref__(OEHierResidueIter self) -> OEHierResidue"""
        return _oechem.OEHierResidueIter___ref__(self)


    def IsValid(self):
      return _oechem.OEHierResidueIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEHierResidueIter self) -> PyObject *"""
        return _oechem.OEHierResidueIter_next(self)


    def Target(self) -> "OEBio::OEHierResidue &":
        """Target(OEHierResidueIter self) -> OEHierResidue"""
        return _oechem.OEHierResidueIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """
        Next(OEHierResidueIter self) -> OEHierResidueIter
        Next(OEHierResidueIter self, int i) -> OEHierResidueIter
        """
        return _oechem.OEHierResidueIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue > &":
        """
        Prev(OEHierResidueIter self) -> OEHierResidueIter
        Prev(OEHierResidueIter self, int i) -> OEHierResidueIter
        """
        return _oechem.OEHierResidueIter_Prev(self, *args)

OEHierResidueIter_swigregister = _oechem.OEHierResidueIter_swigregister
OEHierResidueIter_swigregister(OEHierResidueIter)

class OEHierFragmentIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEHierFragment)> 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<(OEBio::OEHierFragment)> self) -> OEHierFragmentIter
        __init__(OESystem::OEIter<(OEBio::OEHierFragment)> self, OEHierFragmentIter rhs) -> OEHierFragmentIter
        __init__(OESystem::OEIter<(OEBio::OEHierFragment)> self, OESystem::OEIterBase< OEBio::OEHierFragment > * rhs) -> OEHierFragmentIter
        __init__(OESystem::OEIter<(OEBio::OEHierFragment)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierFragment >::NonConstA > * rhs) -> OEHierFragmentIter
        """
        this = _oechem.new_OEHierFragmentIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHierFragmentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierFragment > *":
        """Copy(OEHierFragmentIter self) -> OESystem::OEIterBase< OEBio::OEHierFragment > *"""
        return _oechem.OEHierFragmentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEHierFragmentIter self, OESystem::OEIterBase< OEBio::OEHierFragment > * ib)
        Push(OEHierFragmentIter self, OEHierFragmentIter iter)
        """
        return _oechem.OEHierFragmentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierFragment,OEBio::OEHierFragment > const &') -> "void":
        """Sort(OEHierFragmentIter self, OESystem::OEBinaryPredicate< OEBio::OEHierFragment,OEBio::OEHierFragment > const & sort_criterion)"""
        return _oechem.OEHierFragmentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """ToFirst(OEHierFragmentIter self) -> OEHierFragmentIter"""
        return _oechem.OEHierFragmentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """ToLast(OEHierFragmentIter self) -> OEHierFragmentIter"""
        return _oechem.OEHierFragmentIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierFragment &":
        """__ref__(OEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.OEHierFragmentIter___ref__(self)


    def IsValid(self):
      return _oechem.OEHierFragmentIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEHierFragmentIter self) -> PyObject *"""
        return _oechem.OEHierFragmentIter_next(self)


    def Target(self) -> "OEBio::OEHierFragment &":
        """Target(OEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.OEHierFragmentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """
        Next(OEHierFragmentIter self) -> OEHierFragmentIter
        Next(OEHierFragmentIter self, int i) -> OEHierFragmentIter
        """
        return _oechem.OEHierFragmentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment > &":
        """
        Prev(OEHierFragmentIter self) -> OEHierFragmentIter
        Prev(OEHierFragmentIter self, int i) -> OEHierFragmentIter
        """
        return _oechem.OEHierFragmentIter_Prev(self, *args)

OEHierFragmentIter_swigregister = _oechem.OEHierFragmentIter_swigregister
OEHierFragmentIter_swigregister(OEHierFragmentIter)

class OEHierChainIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEHierChain)> 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<(OEBio::OEHierChain)> self) -> OEHierChainIter
        __init__(OESystem::OEIter<(OEBio::OEHierChain)> self, OEHierChainIter rhs) -> OEHierChainIter
        __init__(OESystem::OEIter<(OEBio::OEHierChain)> self, OESystem::OEIterBase< OEBio::OEHierChain > * rhs) -> OEHierChainIter
        __init__(OESystem::OEIter<(OEBio::OEHierChain)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierChain >::NonConstA > * rhs) -> OEHierChainIter
        """
        this = _oechem.new_OEHierChainIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEHierChainIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierChain > *":
        """Copy(OEHierChainIter self) -> OESystem::OEIterBase< OEBio::OEHierChain > *"""
        return _oechem.OEHierChainIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEHierChainIter self, OESystem::OEIterBase< OEBio::OEHierChain > * ib)
        Push(OEHierChainIter self, OEHierChainIter iter)
        """
        return _oechem.OEHierChainIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierChain,OEBio::OEHierChain > const &') -> "void":
        """Sort(OEHierChainIter self, OESystem::OEBinaryPredicate< OEBio::OEHierChain,OEBio::OEHierChain > const & sort_criterion)"""
        return _oechem.OEHierChainIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """ToFirst(OEHierChainIter self) -> OEHierChainIter"""
        return _oechem.OEHierChainIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """ToLast(OEHierChainIter self) -> OEHierChainIter"""
        return _oechem.OEHierChainIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierChain &":
        """__ref__(OEHierChainIter self) -> OEHierChain"""
        return _oechem.OEHierChainIter___ref__(self)


    def IsValid(self):
      return _oechem.OEHierChainIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEHierChainIter self) -> PyObject *"""
        return _oechem.OEHierChainIter_next(self)


    def Target(self) -> "OEBio::OEHierChain &":
        """Target(OEHierChainIter self) -> OEHierChain"""
        return _oechem.OEHierChainIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """
        Next(OEHierChainIter self) -> OEHierChainIter
        Next(OEHierChainIter self, int i) -> OEHierChainIter
        """
        return _oechem.OEHierChainIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain > &":
        """
        Prev(OEHierChainIter self) -> OEHierChainIter
        Prev(OEHierChainIter self, int i) -> OEHierChainIter
        """
        return _oechem.OEHierChainIter_Prev(self, *args)

OEHierChainIter_swigregister = _oechem.OEHierChainIter_swigregister
OEHierChainIter_swigregister(OEHierChainIter)

class OERotamerIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OERotamer)> 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<(OEBio::OERotamer)> self) -> OERotamerIter
        __init__(OESystem::OEIter<(OEBio::OERotamer)> self, OERotamerIter rhs) -> OERotamerIter
        __init__(OESystem::OEIter<(OEBio::OERotamer)> self, OESystem::OEIterBase< OEBio::OERotamer > * rhs) -> OERotamerIter
        __init__(OESystem::OEIter<(OEBio::OERotamer)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OERotamer >::NonConstA > * rhs) -> OERotamerIter
        """
        this = _oechem.new_OERotamerIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERotamerIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OERotamer > *":
        """Copy(OERotamerIter self) -> OESystem::OEIterBase< OEBio::OERotamer > *"""
        return _oechem.OERotamerIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OERotamerIter self, OESystem::OEIterBase< OEBio::OERotamer > * ib)
        Push(OERotamerIter self, OERotamerIter iter)
        """
        return _oechem.OERotamerIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OERotamer,OEBio::OERotamer > const &') -> "void":
        """Sort(OERotamerIter self, OESystem::OEBinaryPredicate< OEBio::OERotamer,OEBio::OERotamer > const & sort_criterion)"""
        return _oechem.OERotamerIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """ToFirst(OERotamerIter self) -> OERotamerIter"""
        return _oechem.OERotamerIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """ToLast(OERotamerIter self) -> OERotamerIter"""
        return _oechem.OERotamerIter_ToLast(self)


    def __ref__(self) -> "OEBio::OERotamer &":
        """__ref__(OERotamerIter self) -> OERotamer"""
        return _oechem.OERotamerIter___ref__(self)


    def IsValid(self):
      return _oechem.OERotamerIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OERotamerIter self) -> PyObject *"""
        return _oechem.OERotamerIter_next(self)


    def Target(self) -> "OEBio::OERotamer &":
        """Target(OERotamerIter self) -> OERotamer"""
        return _oechem.OERotamerIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """
        Next(OERotamerIter self) -> OERotamerIter
        Next(OERotamerIter self, int i) -> OERotamerIter
        """
        return _oechem.OERotamerIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OERotamer > &":
        """
        Prev(OERotamerIter self) -> OERotamerIter
        Prev(OERotamerIter self, int i) -> OERotamerIter
        """
        return _oechem.OERotamerIter_Prev(self, *args)

OERotamerIter_swigregister = _oechem.OERotamerIter_swigregister
OERotamerIter_swigregister(OERotamerIter)

class ConstOEHierResidueIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEHierResidue)> 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).OEBio::OEHierResidue)> self) -> ConstOEHierResidueIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierResidue)> self, ConstOEHierResidueIter rhs) -> ConstOEHierResidueIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierResidue)> self, OESystem::OEIterBase< OEBio::OEHierResidue const > * rhs) -> ConstOEHierResidueIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierResidue)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierResidue const >::NonConstA > * rhs) -> ConstOEHierResidueIter
        """
        this = _oechem.new_ConstOEHierResidueIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_ConstOEHierResidueIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierResidue const > *":
        """Copy(ConstOEHierResidueIter self) -> OESystem::OEIterBase< OEBio::OEHierResidue const > *"""
        return _oechem.ConstOEHierResidueIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(ConstOEHierResidueIter self, OESystem::OEIterBase< OEBio::OEHierResidue const > * ib)
        Push(ConstOEHierResidueIter self, ConstOEHierResidueIter iter)
        """
        return _oechem.ConstOEHierResidueIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierResidue const,OEBio::OEHierResidue const > const &') -> "void":
        """Sort(ConstOEHierResidueIter self, OESystem::OEBinaryPredicate< OEBio::OEHierResidue const,OEBio::OEHierResidue const > const & sort_criterion)"""
        return _oechem.ConstOEHierResidueIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """ToFirst(ConstOEHierResidueIter self) -> ConstOEHierResidueIter"""
        return _oechem.ConstOEHierResidueIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """ToLast(ConstOEHierResidueIter self) -> ConstOEHierResidueIter"""
        return _oechem.ConstOEHierResidueIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierResidue const &":
        """__ref__(ConstOEHierResidueIter self) -> OEHierResidue"""
        return _oechem.ConstOEHierResidueIter___ref__(self)


    def IsValid(self):
      return _oechem.ConstOEHierResidueIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(ConstOEHierResidueIter self) -> PyObject *"""
        return _oechem.ConstOEHierResidueIter_next(self)


    def Target(self) -> "OEBio::OEHierResidue const &":
        """Target(ConstOEHierResidueIter self) -> OEHierResidue"""
        return _oechem.ConstOEHierResidueIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """
        Next(ConstOEHierResidueIter self) -> ConstOEHierResidueIter
        Next(ConstOEHierResidueIter self, int i) -> ConstOEHierResidueIter
        """
        return _oechem.ConstOEHierResidueIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierResidue const > &":
        """
        Prev(ConstOEHierResidueIter self) -> ConstOEHierResidueIter
        Prev(ConstOEHierResidueIter self, int i) -> ConstOEHierResidueIter
        """
        return _oechem.ConstOEHierResidueIter_Prev(self, *args)

ConstOEHierResidueIter_swigregister = _oechem.ConstOEHierResidueIter_swigregister
ConstOEHierResidueIter_swigregister(ConstOEHierResidueIter)

class ConstOEHierFragmentIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEHierFragment)> 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).OEBio::OEHierFragment)> self) -> ConstOEHierFragmentIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierFragment)> self, ConstOEHierFragmentIter rhs) -> ConstOEHierFragmentIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierFragment)> self, OESystem::OEIterBase< OEBio::OEHierFragment const > * rhs) -> ConstOEHierFragmentIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierFragment)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierFragment const >::NonConstA > * rhs) -> ConstOEHierFragmentIter
        """
        this = _oechem.new_ConstOEHierFragmentIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_ConstOEHierFragmentIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierFragment const > *":
        """Copy(ConstOEHierFragmentIter self) -> OESystem::OEIterBase< OEBio::OEHierFragment const > *"""
        return _oechem.ConstOEHierFragmentIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(ConstOEHierFragmentIter self, OESystem::OEIterBase< OEBio::OEHierFragment const > * ib)
        Push(ConstOEHierFragmentIter self, ConstOEHierFragmentIter iter)
        """
        return _oechem.ConstOEHierFragmentIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierFragment const,OEBio::OEHierFragment const > const &') -> "void":
        """Sort(ConstOEHierFragmentIter self, OESystem::OEBinaryPredicate< OEBio::OEHierFragment const,OEBio::OEHierFragment const > const & sort_criterion)"""
        return _oechem.ConstOEHierFragmentIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """ToFirst(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter"""
        return _oechem.ConstOEHierFragmentIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """ToLast(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter"""
        return _oechem.ConstOEHierFragmentIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierFragment const &":
        """__ref__(ConstOEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.ConstOEHierFragmentIter___ref__(self)


    def IsValid(self):
      return _oechem.ConstOEHierFragmentIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(ConstOEHierFragmentIter self) -> PyObject *"""
        return _oechem.ConstOEHierFragmentIter_next(self)


    def Target(self) -> "OEBio::OEHierFragment const &":
        """Target(ConstOEHierFragmentIter self) -> OEHierFragment"""
        return _oechem.ConstOEHierFragmentIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """
        Next(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter
        Next(ConstOEHierFragmentIter self, int i) -> ConstOEHierFragmentIter
        """
        return _oechem.ConstOEHierFragmentIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierFragment const > &":
        """
        Prev(ConstOEHierFragmentIter self) -> ConstOEHierFragmentIter
        Prev(ConstOEHierFragmentIter self, int i) -> ConstOEHierFragmentIter
        """
        return _oechem.ConstOEHierFragmentIter_Prev(self, *args)

ConstOEHierFragmentIter_swigregister = _oechem.ConstOEHierFragmentIter_swigregister
ConstOEHierFragmentIter_swigregister(ConstOEHierFragmentIter)

class ConstOEHierChainIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEBio::OEHierChain)> 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).OEBio::OEHierChain)> self) -> ConstOEHierChainIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierChain)> self, ConstOEHierChainIter rhs) -> ConstOEHierChainIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierChain)> self, OESystem::OEIterBase< OEBio::OEHierChain const > * rhs) -> ConstOEHierChainIter
        __init__(OESystem::OEIter<(q(const).OEBio::OEHierChain)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEHierChain const >::NonConstA > * rhs) -> ConstOEHierChainIter
        """
        this = _oechem.new_ConstOEHierChainIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_ConstOEHierChainIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEHierChain const > *":
        """Copy(ConstOEHierChainIter self) -> OESystem::OEIterBase< OEBio::OEHierChain const > *"""
        return _oechem.ConstOEHierChainIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(ConstOEHierChainIter self, OESystem::OEIterBase< OEBio::OEHierChain const > * ib)
        Push(ConstOEHierChainIter self, ConstOEHierChainIter iter)
        """
        return _oechem.ConstOEHierChainIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEHierChain const,OEBio::OEHierChain const > const &') -> "void":
        """Sort(ConstOEHierChainIter self, OESystem::OEBinaryPredicate< OEBio::OEHierChain const,OEBio::OEHierChain const > const & sort_criterion)"""
        return _oechem.ConstOEHierChainIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """ToFirst(ConstOEHierChainIter self) -> ConstOEHierChainIter"""
        return _oechem.ConstOEHierChainIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """ToLast(ConstOEHierChainIter self) -> ConstOEHierChainIter"""
        return _oechem.ConstOEHierChainIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEHierChain const &":
        """__ref__(ConstOEHierChainIter self) -> OEHierChain"""
        return _oechem.ConstOEHierChainIter___ref__(self)


    def IsValid(self):
      return _oechem.ConstOEHierChainIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(ConstOEHierChainIter self) -> PyObject *"""
        return _oechem.ConstOEHierChainIter_next(self)


    def Target(self) -> "OEBio::OEHierChain const &":
        """Target(ConstOEHierChainIter self) -> OEHierChain"""
        return _oechem.ConstOEHierChainIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """
        Next(ConstOEHierChainIter self) -> ConstOEHierChainIter
        Next(ConstOEHierChainIter self, int i) -> ConstOEHierChainIter
        """
        return _oechem.ConstOEHierChainIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEHierChain const > &":
        """
        Prev(ConstOEHierChainIter self) -> ConstOEHierChainIter
        Prev(ConstOEHierChainIter self, int i) -> ConstOEHierChainIter
        """
        return _oechem.ConstOEHierChainIter_Prev(self, *args)

ConstOEHierChainIter_swigregister = _oechem.ConstOEHierChainIter_swigregister
ConstOEHierChainIter_swigregister(ConstOEHierChainIter)


def OERMSD(*args) -> "double":
    """
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True, bool heavyOnly=True) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, bool automorph=True) -> double
    OERMSD(OEMolBase ref, OEMolBase fit) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match, bool overlay=False, double * rot=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match, bool overlay=False) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OEMatchBase match) -> double
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False, double * rot=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True, bool overlay=False) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True, bool heavyOnly=True) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, bool automorph=True) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OERMSD(OEMolBase ref, OEMCMolBase fit, double * rmsdArray, OEMatchBase match) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None, double * trans=None) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False, double * rot=None) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match, bool overlay=False) -> bool
    OERMSD(OEMolBase ref, OEMolBase fit, double * rmsdArray, OEMatchBase match) -> bool
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size, bool overlay=False, double * rot=None) -> double
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size, bool overlay=False) -> double
    OERMSD(float const * refcrds, float const * fitcrds, unsigned int size) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size, bool overlay=False, double * rot=None) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size, bool overlay=False) -> double
    OERMSD(double const * refcrds, double const * fitcrds, unsigned int size) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True, bool overlay=False, double * rot=None, double * trans=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True, bool overlay=False, double * rot=None) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True, bool overlay=False) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align, bool onlyCAlpha=True) -> double
    OERMSD(OEMolBase ref, OEMolBase fit, OESequenceAlignment align) -> double
    """
    return _oechem.OERMSD(*args)

def OEGetTorsion(*args) -> "double":
    """
    OEGetTorsion(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    OEGetTorsion(OEConfBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d) -> double
    OEGetTorsion(OEHierResidue res, unsigned int torType) -> double
    OEGetTorsion(OEAtomBase atom, unsigned int torType, unsigned int assume) -> double
    OEGetTorsion(OEAtomBase atom, unsigned int torType) -> double
    """
    return _oechem.OEGetTorsion(*args)

def OESetTorsion(*args) -> "bool":
    """
    OESetTorsion(OEMolBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d, double ang) -> bool
    OESetTorsion(OEConfBase arg1, OEAtomBase a, OEAtomBase b, OEAtomBase c, OEAtomBase d, double ang) -> bool
    OESetTorsion(OEHierResidue res, unsigned int torType, double radians) -> bool
    OESetTorsion(OEAtomBase atom, unsigned int torType, double radians, unsigned int assume) -> bool
    OESetTorsion(OEAtomBase atom, unsigned int torType, double radians) -> bool
    """
    return _oechem.OESetTorsion(*args)

def OEGetChis(*args) -> "PyObject *":
    """
    OEGetChis(OEHierResidue res) -> PyObject
    OEGetChis(OEAtomBase atom, unsigned int assume) -> PyObject
    OEGetChis(OEAtomBase atom) -> PyObject *
    """
    return _oechem.OEGetChis(*args)

def OEGetResidues(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEResidue > *":
    """OEGetResidues(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEResidue > *"""
    return _oechem.OEGetResidues(mol)

def OEGetProteinTorsionName(torType: 'unsigned int') -> "char const *":
    """OEGetProteinTorsionName(unsigned int torType) -> char const *"""
    return _oechem.OEGetProteinTorsionName(torType)

def OEGetPhi(*args) -> "double":
    """
    OEGetPhi(OEHierResidue res) -> double
    OEGetPhi(OEAtomBase atom, unsigned int assume) -> double
    OEGetPhi(OEAtomBase atom) -> double
    """
    return _oechem.OEGetPhi(*args)

def OEGetPsi(*args) -> "double":
    """
    OEGetPsi(OEHierResidue res) -> double
    OEGetPsi(OEAtomBase atom, unsigned int assume) -> double
    OEGetPsi(OEAtomBase atom) -> double
    """
    return _oechem.OEGetPsi(*args)

def OESwapAIEResidueAtoms(*args) -> "bool":
    """
    OESwapAIEResidueAtoms(OEMolBase mol, OEHierResidue res) -> bool
    OESwapAIEResidueAtoms(OEMCMolBase mol, OEHierResidue res) -> bool
    OESwapAIEResidueAtoms(OEMolBase mol, OEAtomBase atom, unsigned int assume) -> bool
    OESwapAIEResidueAtoms(OEMolBase mol, OEAtomBase atom) -> bool
    OESwapAIEResidueAtoms(OEMCMolBase mol, OEAtomBase atom, unsigned int assume) -> bool
    OESwapAIEResidueAtoms(OEMCMolBase mol, OEAtomBase atom) -> bool
    """
    return _oechem.OESwapAIEResidueAtoms(*args)

def OEIsStandardProteinResidue(*args) -> "bool":
    """
    OEIsStandardProteinResidue(OEHierResidue hres) -> bool
    OEIsStandardProteinResidue(OEResidue res) -> bool
    OEIsStandardProteinResidue(unsigned int resIdx) -> bool
    OEIsStandardProteinResidue(OEHierResidueIter hit) -> bool
    """
    return _oechem.OEIsStandardProteinResidue(*args)
class OERamachandranAnalysis(object):
    """Proxy of C++ OEBio::OERamachandranAnalysis 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__(OEBio::OERamachandranAnalysis self, double phi, double psi, unsigned int const ramaType) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OEAtomBase atom) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OEHierResidue res) -> OERamachandranAnalysis
        __init__(OEBio::OERamachandranAnalysis self, OEMolBase mol, OEResidue res) -> OERamachandranAnalysis
        """
        this = _oechem.new_OERamachandranAnalysis(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetRamaScore(self) -> "double":
        """GetRamaScore(OERamachandranAnalysis self) -> double"""
        return _oechem.OERamachandranAnalysis_GetRamaScore(self)


    def GetPhi(self) -> "double":
        """GetPhi(OERamachandranAnalysis self) -> double"""
        return _oechem.OERamachandranAnalysis_GetPhi(self)


    def GetPsi(self) -> "double":
        """GetPsi(OERamachandranAnalysis self) -> double"""
        return _oechem.OERamachandranAnalysis_GetPsi(self)


    def GetRamaType(self) -> "unsigned int":
        """GetRamaType(OERamachandranAnalysis self) -> unsigned int"""
        return _oechem.OERamachandranAnalysis_GetRamaType(self)


    def GetRamaCategory(self) -> "unsigned int":
        """GetRamaCategory(OERamachandranAnalysis self) -> unsigned int"""
        return _oechem.OERamachandranAnalysis_GetRamaCategory(self)

    __swig_destroy__ = _oechem.delete_OERamachandranAnalysis
    __del__ = lambda self: None
OERamachandranAnalysis_swigregister = _oechem.OERamachandranAnalysis_swigregister
OERamachandranAnalysis_swigregister(OERamachandranAnalysis)


def OEGetRamachandranTypeName(ramaType: 'unsigned int const') -> "std::string":
    """OEGetRamachandranTypeName(unsigned int const ramaType) -> std::string"""
    return _oechem.OEGetRamachandranTypeName(ramaType)

def OEGetRamachandranCategoryName(ramaCategory: 'unsigned int const') -> "std::string":
    """OEGetRamachandranCategoryName(unsigned int const ramaCategory) -> std::string"""
    return _oechem.OEGetRamachandranCategoryName(ramaCategory)

def OEPerceiveSecondaryStructure(mol: 'OEMolBase', force: 'bool'=False) -> "bool":
    """
    OEPerceiveSecondaryStructure(OEMolBase mol, bool force=False) -> bool
    OEPerceiveSecondaryStructure(OEMolBase mol) -> bool
    """
    return _oechem.OEPerceiveSecondaryStructure(mol, force)

def OEGetSecondaryStructureName(ssValue: 'int') -> "std::string":
    """OEGetSecondaryStructureName(int ssValue) -> std::string"""
    return _oechem.OEGetSecondaryStructureName(ssValue)

def OEGetSecondaryStructureID(ssValue: 'int') -> "int":
    """OEGetSecondaryStructureID(int ssValue) -> int"""
    return _oechem.OEGetSecondaryStructureID(ssValue)

def OEGetSecondaryStructureStrandID(ssValue: 'int') -> "int":
    """OEGetSecondaryStructureStrandID(int ssValue) -> int"""
    return _oechem.OEGetSecondaryStructureStrandID(ssValue)

def OEGetSecondaryStructureType(ssValue: 'int') -> "int":
    """OEGetSecondaryStructureType(int ssValue) -> int"""
    return _oechem.OEGetSecondaryStructureType(ssValue)

def OESecondaryStructurePacked(ssType: 'int', ssIDNumber: 'int', strandID: 'int'=0) -> "int":
    """
    OESecondaryStructurePacked(int ssType, int ssIDNumber, int strandID=0) -> int
    OESecondaryStructurePacked(int ssType, int ssIDNumber) -> int
    """
    return _oechem.OESecondaryStructurePacked(ssType, ssIDNumber, strandID)
class OEHasSecondaryStructure(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEHasSecondaryStructure 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__(OEBio::OEHasSecondaryStructure self, int ssType) -> OEHasSecondaryStructure
        __init__(OEBio::OEHasSecondaryStructure self) -> OEHasSecondaryStructure
        __init__(OEBio::OEHasSecondaryStructure self, OEHasSecondaryStructure rhs) -> OEHasSecondaryStructure
        """
        this = _oechem.new_OEHasSecondaryStructure(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasSecondaryStructure self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasSecondaryStructure___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasSecondaryStructure
    __del__ = lambda self: None
OEHasSecondaryStructure_swigregister = _oechem.OEHasSecondaryStructure_swigregister
OEHasSecondaryStructure_swigregister(OEHasSecondaryStructure)


def OEGetColorSchemeName(colorScheme: 'unsigned int') -> "char const *":
    """OEGetColorSchemeName(unsigned int colorScheme) -> char const *"""
    return _oechem.OEGetColorSchemeName(colorScheme)
class OEMolStyleColorer(object):
    """Proxy of C++ OEChem::OEMolStyleColorer 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__(OEChem::OEMolStyleColorer self) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, OEColor col) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, OEMolStyleColorer other) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, unsigned int colorScheme) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, unsigned int colorScheme, OEColor defaultColor) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, std::string const & propertyName) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, std::string const & propertyName, OEColor defaultColor) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, char const * propertyName) -> OEMolStyleColorer
        __init__(OEChem::OEMolStyleColorer self, char const * propertyName, OEColor defaultColor) -> OEMolStyleColorer
        """
        this = _oechem.new_OEMolStyleColorer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolStyleColorer
    __del__ = lambda self: None

    def GetColorScheme(self) -> "unsigned int":
        """GetColorScheme(OEMolStyleColorer self) -> unsigned int"""
        return _oechem.OEMolStyleColorer_GetColorScheme(self)


    def GetPropertyName(self) -> "std::string":
        """GetPropertyName(OEMolStyleColorer self) -> std::string"""
        return _oechem.OEMolStyleColorer_GetPropertyName(self)


    def AddColor(self, *args) -> "bool":
        """
        AddColor(OEMolStyleColorer self, double value, OEColor col) -> bool
        AddColor(OEMolStyleColorer self, std::string const & value, OEColor col) -> bool
        AddColor(OEMolStyleColorer self, int value, OEColor col) -> bool
        AddColor(OEMolStyleColorer self, unsigned int value, OEColor col) -> bool
        """
        return _oechem.OEMolStyleColorer_AddColor(self, *args)


    def ClearColors(self) -> "void":
        """ClearColors(OEMolStyleColorer self)"""
        return _oechem.OEMolStyleColorer_ClearColors(self)


    def GetNumColors(self) -> "unsigned int":
        """GetNumColors(OEMolStyleColorer self) -> unsigned int"""
        return _oechem.OEMolStyleColorer_GetNumColors(self)


    def GetValues(self, *args) -> "bool":
        """
        GetValues(OEMolStyleColorer self, OEDoubleVector vals) -> bool
        GetValues(OEMolStyleColorer self, std::vector< std::string > & vals) -> bool
        GetValues(OEMolStyleColorer self, OEIntVector vals) -> bool
        """
        return _oechem.OEMolStyleColorer_GetValues(self, *args)


    def GetColor(self, *args) -> "OESystem::OEColor":
        """
        GetColor(OEMolStyleColorer self, double val) -> OEColor
        GetColor(OEMolStyleColorer self, double val, double scaleMin, double scaleMax) -> OEColor
        GetColor(OEMolStyleColorer self, std::string const & val) -> OEColor
        GetColor(OEMolStyleColorer self, int val) -> OEColor
        GetColor(OEMolStyleColorer self, unsigned int val) -> OEColor
        GetColor(OEMolStyleColorer self) -> OEColor
        """
        return _oechem.OEMolStyleColorer_GetColor(self, *args)


    def GetDefaultColor(self) -> "OESystem::OEColor":
        """GetDefaultColor(OEMolStyleColorer self) -> OEColor"""
        return _oechem.OEMolStyleColorer_GetDefaultColor(self)


    def SetDefaultColor(self, col: 'OEColor') -> "void":
        """SetDefaultColor(OEMolStyleColorer self, OEColor col)"""
        return _oechem.OEMolStyleColorer_SetDefaultColor(self, col)


    def GetDataTypes(self) -> "unsigned int":
        """GetDataTypes(OEMolStyleColorer self) -> unsigned int"""
        return _oechem.OEMolStyleColorer_GetDataTypes(self)


    def __lt__(self, rhs: 'OEMolStyleColorer') -> "bool":
        """__lt__(OEMolStyleColorer self, OEMolStyleColorer rhs) -> bool"""
        return _oechem.OEMolStyleColorer___lt__(self, rhs)


    def __eq__(self, rhs: 'OEMolStyleColorer') -> "bool":
        """__eq__(OEMolStyleColorer self, OEMolStyleColorer rhs) -> bool"""
        return _oechem.OEMolStyleColorer___eq__(self, rhs)


    def GetImpl(self, *args) -> "OEChem::OEMolStyleColorerImpl *":
        """
        GetImpl(OEMolStyleColorer self) -> OEChem::OEMolStyleColorerImpl const
        GetImpl(OEMolStyleColorer self) -> OEChem::OEMolStyleColorerImpl *
        """
        return _oechem.OEMolStyleColorer_GetImpl(self, *args)

OEMolStyleColorer_swigregister = _oechem.OEMolStyleColorer_swigregister
OEMolStyleColorer_swigregister(OEMolStyleColorer)

class OE3DMolStyle(object):
    """Proxy of C++ OEChem::OE3DMolStyle 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__(OEChem::OE3DMolStyle self) -> OE3DMolStyle
        __init__(OEChem::OE3DMolStyle self, OE3DMolStyle other) -> OE3DMolStyle
        """
        this = _oechem.new_OE3DMolStyle(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OE3DMolStyle
    __del__ = lambda self: None

    def __eq__(self, rhs: 'OE3DMolStyle') -> "bool":
        """__eq__(OE3DMolStyle self, OE3DMolStyle rhs) -> bool"""
        return _oechem.OE3DMolStyle___eq__(self, rhs)


    def __lt__(self, rhs: 'OE3DMolStyle') -> "bool":
        """__lt__(OE3DMolStyle self, OE3DMolStyle rhs) -> bool"""
        return _oechem.OE3DMolStyle___lt__(self, rhs)


    def SetAtomStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetAtomStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomStyle(self, displayStyle)


    def GetAtomStyle(self) -> "unsigned int":
        """GetAtomStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetAtomStyle(self)


    def HasAtomStyle(self) -> "bool":
        """HasAtomStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomStyle(self)


    def ClearAtomStyle(self) -> "void":
        """ClearAtomStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomStyle(self)


    def SetAtomColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetAtomColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomColorer(self, colorer)


    def GetAtomColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetAtomColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetAtomColorer(self)


    def HasAtomColorer(self) -> "bool":
        """HasAtomColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomColorer(self)


    def ClearAtomColorer(self) -> "void":
        """ClearAtomColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomColorer(self)


    def SetHydrogenVisibility(self, mode: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetHydrogenVisibility(OE3DMolStyle self, unsigned int mode) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetHydrogenVisibility(self, mode)


    def GetHydrogenVisibility(self) -> "unsigned int":
        """GetHydrogenVisibility(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetHydrogenVisibility(self)


    def HasHydrogenVisibility(self) -> "bool":
        """HasHydrogenVisibility(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasHydrogenVisibility(self)


    def ClearHydrogenVisibility(self) -> "void":
        """ClearHydrogenVisibility(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearHydrogenVisibility(self)


    def SetInteractionStyle(self, mode: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetInteractionStyle(OE3DMolStyle self, unsigned int mode) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetInteractionStyle(self, mode)


    def GetInteractionStyle(self) -> "unsigned int":
        """GetInteractionStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetInteractionStyle(self)


    def HasInteractionStyle(self) -> "bool":
        """HasInteractionStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasInteractionStyle(self)


    def ClearInteractionStyle(self) -> "void":
        """ClearInteractionStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearInteractionStyle(self)


    def SetProteinStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetProteinStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetProteinStyle(self, displayStyle)


    def GetProteinStyle(self) -> "unsigned int":
        """GetProteinStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetProteinStyle(self)


    def HasProteinStyle(self) -> "bool":
        """HasProteinStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasProteinStyle(self)


    def ClearProteinStyle(self) -> "void":
        """ClearProteinStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearProteinStyle(self)


    def SetProteinColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetProteinColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetProteinColorer(self, colorer)


    def GetProteinColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetProteinColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetProteinColorer(self)


    def HasProteinColorer(self) -> "bool":
        """HasProteinColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasProteinColorer(self)


    def ClearProteinColorer(self) -> "void":
        """ClearProteinColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearProteinColorer(self)


    def SetSurfaceType(self, surfaceType: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceType(OE3DMolStyle self, unsigned int surfaceType) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceType(self, surfaceType)


    def GetSurfaceType(self) -> "unsigned int":
        """GetSurfaceType(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetSurfaceType(self)


    def HasSurfaceType(self) -> "bool":
        """HasSurfaceType(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceType(self)


    def ClearSurfaceType(self) -> "void":
        """ClearSurfaceType(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceType(self)


    def SetSurfaceStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceStyle(self, displayStyle)


    def GetSurfaceStyle(self) -> "unsigned int":
        """GetSurfaceStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetSurfaceStyle(self)


    def HasSurfaceStyle(self) -> "bool":
        """HasSurfaceStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceStyle(self)


    def ClearSurfaceStyle(self) -> "void":
        """ClearSurfaceStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceStyle(self)


    def SetSurfaceColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceColorer(self, colorer)


    def GetSurfaceColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetSurfaceColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetSurfaceColorer(self)


    def HasSurfaceColorer(self) -> "bool":
        """HasSurfaceColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceColorer(self)


    def ClearSurfaceColorer(self) -> "void":
        """ClearSurfaceColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceColorer(self)


    def SetSurfaceAlpha(self, alpha: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetSurfaceAlpha(OE3DMolStyle self, unsigned int alpha) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetSurfaceAlpha(self, alpha)


    def GetSurfaceAlpha(self) -> "unsigned int":
        """GetSurfaceAlpha(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetSurfaceAlpha(self)


    def HasSurfaceAlpha(self) -> "bool":
        """HasSurfaceAlpha(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasSurfaceAlpha(self)


    def ClearSurfaceAlpha(self) -> "void":
        """ClearSurfaceAlpha(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearSurfaceAlpha(self)


    def SetGridType(self, gridType: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetGridType(OE3DMolStyle self, unsigned int gridType) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetGridType(self, gridType)


    def GetGridType(self) -> "unsigned int":
        """GetGridType(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetGridType(self)


    def HasGridType(self) -> "bool":
        """HasGridType(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasGridType(self)


    def ClearGridType(self) -> "void":
        """ClearGridType(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearGridType(self)


    def SetContourStyle(self, displayStyle: 'unsigned int') -> "OEChem::OE3DMolStyle &":
        """SetContourStyle(OE3DMolStyle self, unsigned int displayStyle) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetContourStyle(self, displayStyle)


    def GetContourStyle(self) -> "unsigned int":
        """GetContourStyle(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetContourStyle(self)


    def HasContourStyle(self) -> "bool":
        """HasContourStyle(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasContourStyle(self)


    def ClearContourStyle(self) -> "void":
        """ClearContourStyle(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearContourStyle(self)


    def SetGridContourColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetGridContourColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetGridContourColorer(self, colorer)


    def GetGridContourColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetGridContourColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetGridContourColorer(self)


    def HasGridContourColorer(self) -> "bool":
        """HasGridContourColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasGridContourColorer(self)


    def ClearGridContourColorer(self) -> "void":
        """ClearGridContourColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearGridContourColorer(self)


    def SetAtomLabelType(self, labelData: 'unsigned int', precision: 'unsigned int'=0) -> "OEChem::OE3DMolStyle &":
        """
        SetAtomLabelType(OE3DMolStyle self, unsigned int labelData, unsigned int precision=0) -> OE3DMolStyle
        SetAtomLabelType(OE3DMolStyle self, unsigned int labelData) -> OE3DMolStyle
        """
        return _oechem.OE3DMolStyle_SetAtomLabelType(self, labelData, precision)


    def GetAtomLabelType(self) -> "unsigned int":
        """GetAtomLabelType(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetAtomLabelType(self)


    def HasAtomLabelType(self) -> "bool":
        """HasAtomLabelType(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelType(self)


    def ClearAtomLabelType(self) -> "void":
        """ClearAtomLabelType(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelType(self)


    def GetAtomLabelPrecision(self) -> "unsigned int":
        """GetAtomLabelPrecision(OE3DMolStyle self) -> unsigned int"""
        return _oechem.OE3DMolStyle_GetAtomLabelPrecision(self)


    def SetAtomLabelText(self, label: 'std::string const &') -> "OEChem::OE3DMolStyle &":
        """SetAtomLabelText(OE3DMolStyle self, std::string const & label) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomLabelText(self, label)


    def GetAtomLabelText(self) -> "std::string":
        """GetAtomLabelText(OE3DMolStyle self) -> std::string"""
        return _oechem.OE3DMolStyle_GetAtomLabelText(self)


    def HasAtomLabelText(self) -> "bool":
        """HasAtomLabelText(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelText(self)


    def ClearAtomLabelText(self) -> "void":
        """ClearAtomLabelText(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelText(self)


    def SetAtomLabelDataTag(self, tag: 'std::string const &', precision: 'unsigned int'=0) -> "OEChem::OE3DMolStyle &":
        """
        SetAtomLabelDataTag(OE3DMolStyle self, std::string const & tag, unsigned int precision=0) -> OE3DMolStyle
        SetAtomLabelDataTag(OE3DMolStyle self, std::string const & tag) -> OE3DMolStyle
        """
        return _oechem.OE3DMolStyle_SetAtomLabelDataTag(self, tag, precision)


    def GetAtomLabelDataTag(self) -> "std::string":
        """GetAtomLabelDataTag(OE3DMolStyle self) -> std::string"""
        return _oechem.OE3DMolStyle_GetAtomLabelDataTag(self)


    def HasAtomLabelDataTag(self) -> "bool":
        """HasAtomLabelDataTag(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelDataTag(self)


    def ClearAtomLabelDataTag(self) -> "void":
        """ClearAtomLabelDataTag(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelDataTag(self)


    def SetAtomLabelColorer(self, colorer: 'OEMolStyleColorer') -> "OEChem::OE3DMolStyle &":
        """SetAtomLabelColorer(OE3DMolStyle self, OEMolStyleColorer colorer) -> OE3DMolStyle"""
        return _oechem.OE3DMolStyle_SetAtomLabelColorer(self, colorer)


    def GetAtomLabelColorer(self) -> "OEChem::OEMolStyleColorer const &":
        """GetAtomLabelColorer(OE3DMolStyle self) -> OEMolStyleColorer"""
        return _oechem.OE3DMolStyle_GetAtomLabelColorer(self)


    def HasAtomLabelColorer(self) -> "bool":
        """HasAtomLabelColorer(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_HasAtomLabelColorer(self)


    def ClearAtomLabelColorer(self) -> "void":
        """ClearAtomLabelColorer(OE3DMolStyle self)"""
        return _oechem.OE3DMolStyle_ClearAtomLabelColorer(self)


    def GetString(self) -> "std::string":
        """GetString(OE3DMolStyle self) -> std::string"""
        return _oechem.OE3DMolStyle_GetString(self)


    def FromString(self, str: 'std::string const &') -> "bool":
        """FromString(OE3DMolStyle self, std::string const & str) -> bool"""
        return _oechem.OE3DMolStyle_FromString(self, str)


    def IsValid(self) -> "bool":
        """IsValid(OE3DMolStyle self) -> bool"""
        return _oechem.OE3DMolStyle_IsValid(self)


    def GetImpl(self, *args) -> "OEChem::OE3DMolStyleImpl *":
        """
        GetImpl(OE3DMolStyle self) -> OEChem::OE3DMolStyleImpl const
        GetImpl(OE3DMolStyle self) -> OEChem::OE3DMolStyleImpl *
        """
        return _oechem.OE3DMolStyle_GetImpl(self, *args)

OE3DMolStyle_swigregister = _oechem.OE3DMolStyle_swigregister
OE3DMolStyle_swigregister(OE3DMolStyle)


def OEHasStyle(mol: 'OEMolBase') -> "bool":
    """OEHasStyle(OEMolBase mol) -> bool"""
    return _oechem.OEHasStyle(mol)

def OEGetStyle(*args) -> "OEChem::OE3DMolStyle":
    """
    OEGetStyle(OEMolBase mol) -> OE3DMolStyle
    OEGetStyle(OEAtomBase atom) -> OE3DMolStyle
    OEGetStyle(OEAtomBase atom, OEConfBase c) -> OE3DMolStyle
    OEGetStyle(OEAtomBase atom, OE3DMolStyle dflt) -> OE3DMolStyle
    """
    return _oechem.OEGetStyle(*args)

def OESetStyle(*args) -> "void":
    """
    OESetStyle(OEMolBase mol, OE3DMolStyle style)
    OESetStyle(OEAtomBase atom, OE3DMolStyle style)
    OESetStyle(OEAtomIter atoms, OE3DMolStyle style)
    """
    return _oechem.OESetStyle(*args)

def OEClearStyle(*args) -> "void":
    """
    OEClearStyle(OEMolBase mol)
    OEClearStyle(OEAtomBase atom)
    OEClearStyle(OEAtomIter atoms)
    """
    return _oechem.OEClearStyle(*args)

def OESweepStyles(mol: 'OEMolBase') -> "void":
    """OESweepStyles(OEMolBase mol)"""
    return _oechem.OESweepStyles(mol)

def OEAddMolStyles(lhs: 'OEMolBase', rhs: 'OEMolBase', aa: 'OEChem::OEAtomBase **', arg4: 'OEChem::OEBondBase **') -> "void":
    """OEAddMolStyles(OEMolBase lhs, OEMolBase rhs, OEChem::OEAtomBase ** aa, OEChem::OEBondBase ** arg4)"""
    return _oechem.OEAddMolStyles(lhs, rhs, aa, arg4)

def OEGetStyleChange(initialStyle: 'OE3DMolStyle', finalStyle: 'OE3DMolStyle') -> "OEChem::OE3DMolStyle":
    """OEGetStyleChange(OE3DMolStyle initialStyle, OE3DMolStyle finalStyle) -> OE3DMolStyle"""
    return _oechem.OEGetStyleChange(initialStyle, finalStyle)

def OEApplyStyleChange(initialStyle: 'OE3DMolStyle', deltaStyle: 'OE3DMolStyle') -> "OEChem::OE3DMolStyle":
    """OEApplyStyleChange(OE3DMolStyle initialStyle, OE3DMolStyle deltaStyle) -> OE3DMolStyle"""
    return _oechem.OEApplyStyleChange(initialStyle, deltaStyle)

def OEGetAtomColor(atom: 'OEAtomBase') -> "OESystem::OEColor":
    """OEGetAtomColor(OEAtomBase atom) -> OEColor"""
    return _oechem.OEGetAtomColor(atom)

def OEGetAtomLabelColor(atom: 'OEAtomBase') -> "OESystem::OEColor":
    """OEGetAtomLabelColor(OEAtomBase atom) -> OEColor"""
    return _oechem.OEGetAtomLabelColor(atom)

def OEGetAtomLabelText(atom: 'OEAtomBase') -> "std::string":
    """OEGetAtomLabelText(OEAtomBase atom) -> std::string"""
    return _oechem.OEGetAtomLabelText(atom)

def OESerializeMolStyles(mol: 'OEMolBase') -> "std::string":
    """OESerializeMolStyles(OEMolBase mol) -> std::string"""
    return _oechem.OESerializeMolStyles(mol)

def OEDeserializeMolStyles(mol: 'OEMolBase', str: 'std::string const &', clear: 'bool'=False) -> "bool":
    """
    OEDeserializeMolStyles(OEMolBase mol, std::string const & str, bool clear=False) -> bool
    OEDeserializeMolStyles(OEMolBase mol, std::string const & str) -> bool
    """
    return _oechem.OEDeserializeMolStyles(mol, str, clear)

def OEGetStyleIndex(*args) -> "unsigned int":
    """
    OEGetStyleIndex(OEAtomBase atom) -> unsigned int
    OEGetStyleIndex(OEConfBase conf) -> unsigned int
    """
    return _oechem.OEGetStyleIndex(*args)

def OESetStyleIndex(*args) -> "void":
    """
    OESetStyleIndex(OEAtomBase atom, unsigned int idx)
    OESetStyleIndex(OEConfBase conf, unsigned int idx)
    """
    return _oechem.OESetStyleIndex(*args)

def OEHasBondedResidues(*args) -> "bool":
    """
    OEHasBondedResidues(OEMolBase mol, unsigned int assume) -> bool
    OEHasBondedResidues(OEMolBase mol) -> bool
    """
    return _oechem.OEHasBondedResidues(*args)
class OERotamer(object):
    """Proxy of C++ OEBio::OERotamer class."""

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

    def GetResidueIndex(self) -> "unsigned int":
        """GetResidueIndex(OERotamer self) -> unsigned int"""
        return _oechem.OERotamer_GetResidueIndex(self)


    def GetProbability(self) -> "float":
        """GetProbability(OERotamer self) -> float"""
        return _oechem.OERotamer_GetProbability(self)


    def GetChi1(self) -> "float":
        """GetChi1(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi1(self)


    def GetChi2(self) -> "float":
        """GetChi2(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi2(self)


    def GetChi3(self) -> "float":
        """GetChi3(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi3(self)


    def GetChi4(self) -> "float":
        """GetChi4(OERotamer self) -> float"""
        return _oechem.OERotamer_GetChi4(self)

    ridx = _swig_property(_oechem.OERotamer_ridx_get, _oechem.OERotamer_ridx_set)
    prob = _swig_property(_oechem.OERotamer_prob_get, _oechem.OERotamer_prob_set)
    chi1 = _swig_property(_oechem.OERotamer_chi1_get, _oechem.OERotamer_chi1_set)
    chi2 = _swig_property(_oechem.OERotamer_chi2_get, _oechem.OERotamer_chi2_set)
    chi3 = _swig_property(_oechem.OERotamer_chi3_get, _oechem.OERotamer_chi3_set)
    chi4 = _swig_property(_oechem.OERotamer_chi4_get, _oechem.OERotamer_chi4_set)

    def __init__(self):
        """__init__(OEBio::OERotamer self) -> OERotamer"""
        this = _oechem.new_OERotamer()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OERotamer
    __del__ = lambda self: None
OERotamer_swigregister = _oechem.OERotamer_swigregister
OERotamer_swigregister(OERotamer)


def OEGetRotamers(*args) -> "OESystem::OEIterBase< OEBio::OERotamer > *":
    """
    OEGetRotamers(unsigned int residueIndex, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(unsigned int residueIndex) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEResidue residue, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEResidue residue) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidue residue, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidue residue) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidueIter hit, unsigned int library) -> OESystem::OEIterBase< OEBio::OERotamer >
    OEGetRotamers(OEHierResidueIter hit) -> OESystem::OEIterBase< OEBio::OERotamer > *
    """
    return _oechem.OEGetRotamers(*args)

def OESetRotamer(*args) -> "bool":
    """
    OESetRotamer(OEHierResidue residue, OERotamer rotamer) -> bool
    OESetRotamer(OEAtomBase atom, OERotamer rotamer) -> bool
    """
    return _oechem.OESetRotamer(*args)

def OEGetResidueAtoms(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
    """
    OEGetResidueAtoms(OEAtomBase atom, unsigned int assume) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetResidueAtoms(OEAtomBase atom) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetResidueAtoms(OEMolBase mol, OEResidue residue, unsigned int assume) -> OESystem::OEIterBase< OEChem::OEAtomBase >
    OEGetResidueAtoms(OEMolBase mol, OEResidue residue) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
    """
    return _oechem.OEGetResidueAtoms(*args)

def OEGetLazyIterCls(baseclass):
    class OETestLazyIterator(baseclass):
        """
        This class wraps around an OpenEye iterator to force an object copy
        during iteration.
        """
        def __init__(self, iter=None):
            if iter is not None:
                baseclass.__init__(self, iter)
            else:
                baseclass.__init__(self)

        def __iter__(self):
#the iterator is lazy so yield a copy instead
            for obj in baseclass.__iter__(self):
                copy = obj.__class__(obj)
                yield copy

        def next(self):
            try:
                obj = self.Target()
            except IndexError:
                raise StopIteration("Attempting to get past end of OELazyIterator")
            self.Next()
            return obj

        def prev(self):
            try:
                obj = self.Target()
            except IndexError:
                raise StopIteration("Attempting to get past beginning of OELazyIterator")
            self.Prev()
            return obj

        def Copy(self):
            return self.__class__(self)

        def Target(self):
            obj = baseclass.Target(self)
            return obj.__class__(obj)

    return OETestLazyIterator

class OEAltLocationState(object):
    """Proxy of C++ OEBio::OEAltLocationState 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__(OEBio::OEAltLocationState self) -> OEAltLocationState
        __init__(OEBio::OEAltLocationState self, std::string const & hex) -> OEAltLocationState
        __init__(OEBio::OEAltLocationState self, OEAltLocationState state) -> OEAltLocationState
        """
        this = _oechem.new_OEAltLocationState(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocationState
    __del__ = lambda self: None

    def IsValid(self):
      return _oechem.OEAltLocationState___nonzero__(self)



    def GetImpl(self, *args) -> "OEChem::OEAltLocationStateImpl *":
        """
        GetImpl(OEAltLocationState self) -> OEChem::OEAltLocationStateImpl const
        GetImpl(OEAltLocationState self) -> OEChem::OEAltLocationStateImpl *
        """
        return _oechem.OEAltLocationState_GetImpl(self, *args)


    def ToHexString(self) -> "std::string":
        """ToHexString(OEAltLocationState self) -> std::string"""
        return _oechem.OEAltLocationState_ToHexString(self)

OEAltLocationState_swigregister = _oechem.OEAltLocationState_swigregister
OEAltLocationState_swigregister(OEAltLocationState)

class OEAltLocation(object):
    """Proxy of C++ OEBio::OEAltLocation 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__(OEBio::OEAltLocation self) -> OEAltLocation
        __init__(OEBio::OEAltLocation self, int grpID, int locID, unsigned int numLocs) -> OEAltLocation
        __init__(OEBio::OEAltLocation self, OEAltLocation loc) -> OEAltLocation
        """
        this = _oechem.new_OEAltLocation(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocation
    __del__ = lambda self: None

    def GetGroupID(self) -> "int":
        """GetGroupID(OEAltLocation self) -> int"""
        return _oechem.OEAltLocation_GetGroupID(self)


    def GetLocationCount(self) -> "unsigned int":
        """GetLocationCount(OEAltLocation self) -> unsigned int"""
        return _oechem.OEAltLocation_GetLocationCount(self)


    def GetLocationID(self) -> "int":
        """GetLocationID(OEAltLocation self) -> int"""
        return _oechem.OEAltLocation_GetLocationID(self)


    def IsValid(self):
      return _oechem.OEAltLocation___nonzero__(self)



    def SetLocationID(self, newLoc: 'int') -> "OEBio::OEAltLocation &":
        """SetLocationID(OEAltLocation self, int newLoc) -> OEAltLocation"""
        return _oechem.OEAltLocation_SetLocationID(self, newLoc)


    def __lt__(self, rhs: 'OEAltLocation') -> "int":
        """__lt__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___lt__(self, rhs)


    def __le__(self, rhs: 'OEAltLocation') -> "int":
        """__le__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___le__(self, rhs)


    def __gt__(self, rhs: 'OEAltLocation') -> "int":
        """__gt__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___gt__(self, rhs)


    def __ge__(self, rhs: 'OEAltLocation') -> "int":
        """__ge__(OEAltLocation self, OEAltLocation rhs) -> int"""
        return _oechem.OEAltLocation___ge__(self, rhs)


    def __eq__(self, rhs: 'OEAltLocation') -> "bool":
        """__eq__(OEAltLocation self, OEAltLocation rhs) -> bool"""
        return _oechem.OEAltLocation___eq__(self, rhs)


    def __ne__(self, rhs: 'OEAltLocation') -> "bool":
        """__ne__(OEAltLocation self, OEAltLocation rhs) -> bool"""
        return _oechem.OEAltLocation___ne__(self, rhs)


    def __hash__(self) -> "int":
        """__hash__(OEAltLocation self) -> int"""
        return _oechem.OEAltLocation___hash__(self)

OEAltLocation_swigregister = _oechem.OEAltLocation_swigregister
OEAltLocation_swigregister(OEAltLocation)

class OEAltGroup(object):
    """Proxy of C++ OEBio::OEAltGroup 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__(OEBio::OEAltGroup self) -> OEAltGroup
        __init__(OEBio::OEAltGroup self, unsigned int const * counts) -> OEAltGroup
        __init__(OEBio::OEAltGroup self, OEAltGroup grp) -> OEAltGroup
        """
        this = _oechem.new_OEAltGroup(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltGroup
    __del__ = lambda self: None

    def GetGroupCount(self) -> "unsigned int":
        """GetGroupCount(OEAltGroup self) -> unsigned int"""
        return _oechem.OEAltGroup_GetGroupCount(self)


    def GetGroupID(self) -> "int":
        """GetGroupID(OEAltGroup self) -> int"""
        return _oechem.OEAltGroup_GetGroupID(self)


    def GetLocationCount(self) -> "unsigned int":
        """GetLocationCount(OEAltGroup self) -> unsigned int"""
        return _oechem.OEAltGroup_GetLocationCount(self)


    def GetLocations(*args):
        return OEGetLazyIterCls(OEAltLocationIter)(_oechem.OEAltGroup_GetLocations(*args))



    def IsValid(self):
      return _oechem.OEAltGroup___nonzero__(self)



    def SetGroupID(self, newGrp: 'int') -> "OEBio::OEAltGroup &":
        """SetGroupID(OEAltGroup self, int newGrp) -> OEAltGroup"""
        return _oechem.OEAltGroup_SetGroupID(self, newGrp)


    def __lt__(self, rhs: 'OEAltGroup') -> "int":
        """__lt__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___lt__(self, rhs)


    def __le__(self, rhs: 'OEAltGroup') -> "int":
        """__le__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___le__(self, rhs)


    def __gt__(self, rhs: 'OEAltGroup') -> "int":
        """__gt__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___gt__(self, rhs)


    def __ge__(self, rhs: 'OEAltGroup') -> "int":
        """__ge__(OEAltGroup self, OEAltGroup rhs) -> int"""
        return _oechem.OEAltGroup___ge__(self, rhs)


    def __eq__(self, rhs: 'OEAltGroup') -> "bool":
        """__eq__(OEAltGroup self, OEAltGroup rhs) -> bool"""
        return _oechem.OEAltGroup___eq__(self, rhs)


    def __ne__(self, rhs: 'OEAltGroup') -> "bool":
        """__ne__(OEAltGroup self, OEAltGroup rhs) -> bool"""
        return _oechem.OEAltGroup___ne__(self, rhs)


    def __hash__(self) -> "int":
        """__hash__(OEAltGroup self) -> int"""
        return _oechem.OEAltGroup___hash__(self)

OEAltGroup_swigregister = _oechem.OEAltGroup_swigregister
OEAltGroup_swigregister(OEAltGroup)

class OEAltLocationFactory(object):
    """Proxy of C++ OEBio::OEAltLocationFactory 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__(OEBio::OEAltLocationFactory self, OEMolBase src, unsigned int options) -> OEAltLocationFactory
        __init__(OEBio::OEAltLocationFactory self, OEMolBase src) -> OEAltLocationFactory
        __init__(OEBio::OEAltLocationFactory self, OEChem::OEAltLocationFactoryImpl * impl) -> OEAltLocationFactory
        __init__(OEBio::OEAltLocationFactory self, OEAltLocationFactory fact) -> OEAltLocationFactory
        """
        this = _oechem.new_OEAltLocationFactory(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAltLocationFactory
    __del__ = lambda self: None

    def GetGroupCount(self) -> "unsigned int":
        """GetGroupCount(OEAltLocationFactory self) -> unsigned int"""
        return _oechem.OEAltLocationFactory_GetGroupCount(self)


    def GetGroups(*args):
        return OEGetLazyIterCls(OEAltGroupIter)(_oechem.OEAltLocationFactory_GetGroups(*args))



    def GetGroup(self, *args) -> "OEBio::OEAltGroup":
        """
        GetGroup(OEAltLocationFactory self, OEAtomBase selAtom) -> OEAltGroup
        GetGroup(OEAltLocationFactory self, OEAltLocation loc) -> OEAltGroup
        """
        return _oechem.OEAltLocationFactory_GetGroup(self, *args)


    def GetLocation(self, selAtom: 'OEAtomBase', confCode: 'char', caseSensitive: 'bool'=True) -> "OEBio::OEAltLocation":
        """
        GetLocation(OEAltLocationFactory self, OEAtomBase selAtom, char confCode, bool caseSensitive=True) -> OEAltLocation
        GetLocation(OEAltLocationFactory self, OEAtomBase selAtom, char confCode) -> OEAltLocation
        """
        return _oechem.OEAltLocationFactory_GetLocation(self, selAtom, confCode, caseSensitive)


    def GetLocationCodes(self, *args) -> "std::string":
        """
        GetLocationCodes(OEAltLocationFactory self, OEAltGroup grp) -> std::string
        GetLocationCodes(OEAltLocationFactory self, OEAltLocation loc) -> std::string
        """
        return _oechem.OEAltLocationFactory_GetLocationCodes(self, *args)


    def GetAtomMapSize(self) -> "unsigned int":
        """GetAtomMapSize(OEAltLocationFactory self) -> unsigned int"""
        return _oechem.OEAltLocationFactory_GetAtomMapSize(self)


    def GetBondMapSize(self) -> "unsigned int":
        """GetBondMapSize(OEAltLocationFactory self) -> unsigned int"""
        return _oechem.OEAltLocationFactory_GetBondMapSize(self)


    def MakePrimaryAltMol(self, *args) -> "void":
        """
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options)
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None)
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None)
        MakePrimaryAltMol(OEAltLocationFactory self, OEMolBase dst)
        """
        return _oechem.OEAltLocationFactory_MakePrimaryAltMol(self, *args)


    def MakeCurrentAltMol(self, *args) -> "void":
        """
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options)
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None)
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst, OEChem::OEAtomBase ** atomMap=None)
        MakeCurrentAltMol(OEAltLocationFactory self, OEMolBase dst)
        """
        return _oechem.OEAltLocationFactory_MakeCurrentAltMol(self, *args)


    def MakeAltMol(self, *args) -> "bool":
        """
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True, OEChem::OEAtomBase ** atomMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode, bool caseSensitive=True) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAtomBase selAtom, char confCode) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc, OEChem::OEAtomBase ** atomMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocation loc) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None, unsigned int options) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state, OEChem::OEAtomBase ** atomMap=None) -> bool
        MakeAltMol(OEAltLocationFactory self, OEMolBase dst, OEAltLocationState state) -> bool
        """
        return _oechem.OEAltLocationFactory_MakeAltMol(self, *args)


    def SetPrimaryAlt(self) -> "void":
        """SetPrimaryAlt(OEAltLocationFactory self)"""
        return _oechem.OEAltLocationFactory_SetPrimaryAlt(self)


    def SetAlt(self, *args) -> "bool":
        """
        SetAlt(OEAltLocationFactory self, OEAtomBase selAtom, char confCode, bool caseSensitive=True) -> bool
        SetAlt(OEAltLocationFactory self, OEAtomBase selAtom, char confCode) -> bool
        SetAlt(OEAltLocationFactory self, OEAltLocation loc, bool multiLoc=False) -> bool
        SetAlt(OEAltLocationFactory self, OEAltLocation loc) -> bool
        """
        return _oechem.OEAltLocationFactory_SetAlt(self, *args)


    def SetState(self, state: 'OEAltLocationState') -> "bool":
        """SetState(OEAltLocationFactory self, OEAltLocationState state) -> bool"""
        return _oechem.OEAltLocationFactory_SetState(self, state)


    def GetState(self, *args) -> "void":
        """
        GetState(OEAltLocationFactory self) -> OEAltLocationState
        GetState(OEAltLocationFactory self, OEAltLocationState state)
        """
        return _oechem.OEAltLocationFactory_GetState(self, *args)


    def GetCurrentLocations(self, *args) -> "OESystem::OEIterBase< OEBio::OEAltLocation const > *":
        """
        GetCurrentLocations(OEAltLocationFactory self) -> OESystem::OEIterBase< OEBio::OEAltLocation const >
        GetCurrentLocations(OEAltLocationFactory self, OEAltGroup grp) -> OESystem::OEIterBase< OEBio::OEAltLocation const >
        GetCurrentLocations(OEAltLocationFactory self, int grpNum) -> OESystem::OEIterBase< OEBio::OEAltLocation const > *
        """
        return _oechem.OEAltLocationFactory_GetCurrentLocations(self, *args)


    def GetCurrentAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetCurrentAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetCurrentAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetCurrentAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetCurrentAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAltLocationFactory_GetCurrentAtoms(self, *args)


    def GetAltAtoms(self, *args) -> "OESystem::OEIterBase< OEChem::OEAtomBase > *":
        """
        GetAltAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltGroup grp, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc) -> OESystem::OEIterBase< OEChem::OEAtomBase >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase const >
        GetAltAtoms(OEAltLocationFactory self, OEAltLocation loc, OEUnaryAtomPred pred) -> OESystem::OEIterBase< OEChem::OEAtomBase > *
        """
        return _oechem.OEAltLocationFactory_GetAltAtoms(self, *args)


    def GetSourceMol(self) -> "OEChem::OEMolBase const &":
        """GetSourceMol(OEAltLocationFactory self) -> OEMolBase"""
        return _oechem.OEAltLocationFactory_GetSourceMol(self)


    def GetImpl(self, *args) -> "OEChem::OEAltLocationFactoryImpl *":
        """
        GetImpl(OEAltLocationFactory self) -> OEChem::OEAltLocationFactoryImpl const
        GetImpl(OEAltLocationFactory self) -> OEChem::OEAltLocationFactoryImpl *
        """
        return _oechem.OEAltLocationFactory_GetImpl(self, *args)

OEAltLocationFactory_swigregister = _oechem.OEAltLocationFactory_swigregister
OEAltLocationFactory_swigregister(OEAltLocationFactory)


def OEIsTypicalPrimaryLocationCode(confCode: 'char') -> "bool":
    """OEIsTypicalPrimaryLocationCode(char confCode) -> bool"""
    return _oechem.OEIsTypicalPrimaryLocationCode(confCode)
class OEHasAlternateLocation(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEHasAlternateLocation 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__(OEBio::OEHasAlternateLocation self, char confCode, bool acceptBlanks=False, bool caseSensitive=True) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self, char confCode, bool acceptBlanks=False) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self, char confCode) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self) -> OEHasAlternateLocation
        __init__(OEBio::OEHasAlternateLocation self, OEHasAlternateLocation rhs) -> OEHasAlternateLocation
        """
        this = _oechem.new_OEHasAlternateLocation(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasAlternateLocation self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasAlternateLocation___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasAlternateLocation
    __del__ = lambda self: None
OEHasAlternateLocation_swigregister = _oechem.OEHasAlternateLocation_swigregister
OEHasAlternateLocation_swigregister(OEHasAlternateLocation)

class OEHasPDBAtomIndex(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEHasPDBAtomIndex 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, pdbatomidx: 'unsigned int'):
        """__init__(OEBio::OEHasPDBAtomIndex self, unsigned int pdbatomidx) -> OEHasPDBAtomIndex"""
        this = _oechem.new_OEHasPDBAtomIndex(pdbatomidx)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEHasPDBAtomIndex self, OEAtomBase atom) -> bool"""
        return _oechem.OEHasPDBAtomIndex___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEHasPDBAtomIndex
    __del__ = lambda self: None
OEHasPDBAtomIndex_swigregister = _oechem.OEHasPDBAtomIndex_swigregister
OEHasPDBAtomIndex_swigregister(OEHasPDBAtomIndex)

class OEIsAlphaCarbon(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsAlphaCarbon class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsAlphaCarbon self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsAlphaCarbon___call__(self, atom)


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



    def __init__(self):
        """__init__(OEBio::OEIsAlphaCarbon self) -> OEIsAlphaCarbon"""
        this = _oechem.new_OEIsAlphaCarbon()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsAlphaCarbon
    __del__ = lambda self: None
OEIsAlphaCarbon_swigregister = _oechem.OEIsAlphaCarbon_swigregister
OEIsAlphaCarbon_swigregister(OEIsAlphaCarbon)

class OEIsBackboneAtom(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsBackboneAtom 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, o: 'bool'=True):
        """
        __init__(OEBio::OEIsBackboneAtom self, bool o=True) -> OEIsBackboneAtom
        __init__(OEBio::OEIsBackboneAtom self) -> OEIsBackboneAtom
        """
        this = _oechem.new_OEIsBackboneAtom(o)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsBackboneAtom self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsBackboneAtom___call__(self, atom)


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


    __swig_destroy__ = _oechem.delete_OEIsBackboneAtom
    __del__ = lambda self: None
OEIsBackboneAtom_swigregister = _oechem.OEIsBackboneAtom_swigregister
OEIsBackboneAtom_swigregister(OEIsBackboneAtom)

class OEIsWater(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsWater class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsWater self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsWater___call__(self, atom)


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



    def __init__(self):
        """__init__(OEBio::OEIsWater self) -> OEIsWater"""
        this = _oechem.new_OEIsWater()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsWater
    __del__ = lambda self: None
OEIsWater_swigregister = _oechem.OEIsWater_swigregister
OEIsWater_swigregister(OEIsWater)

class OEIsNucleicAcidBase(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNucleicAcidBase class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNucleicAcidBase self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNucleicAcidBase___call__(self, atom)


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



    def __init__(self):
        """__init__(OEBio::OEIsNucleicAcidBase self) -> OEIsNucleicAcidBase"""
        this = _oechem.new_OEIsNucleicAcidBase()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNucleicAcidBase
    __del__ = lambda self: None
OEIsNucleicAcidBase_swigregister = _oechem.OEIsNucleicAcidBase_swigregister
OEIsNucleicAcidBase_swigregister(OEIsNucleicAcidBase)

class OEIsNucleicAcidSugar(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNucleicAcidSugar class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNucleicAcidSugar self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNucleicAcidSugar___call__(self, atom)


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



    def __init__(self):
        """__init__(OEBio::OEIsNucleicAcidSugar self) -> OEIsNucleicAcidSugar"""
        this = _oechem.new_OEIsNucleicAcidSugar()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNucleicAcidSugar
    __del__ = lambda self: None
OEIsNucleicAcidSugar_swigregister = _oechem.OEIsNucleicAcidSugar_swigregister
OEIsNucleicAcidSugar_swigregister(OEIsNucleicAcidSugar)

class OEIsNucleicAcidPhosphate(OEUnaryAtomPred):
    """Proxy of C++ OEBio::OEIsNucleicAcidPhosphate class."""

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

    def __call__(self, atom: 'OEAtomBase') -> "bool":
        """__call__(OEIsNucleicAcidPhosphate self, OEAtomBase atom) -> bool"""
        return _oechem.OEIsNucleicAcidPhosphate___call__(self, atom)


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



    def __init__(self):
        """__init__(OEBio::OEIsNucleicAcidPhosphate self) -> OEIsNucleicAcidPhosphate"""
        this = _oechem.new_OEIsNucleicAcidPhosphate()
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEIsNucleicAcidPhosphate
    __del__ = lambda self: None
OEIsNucleicAcidPhosphate_swigregister = _oechem.OEIsNucleicAcidPhosphate_swigregister
OEIsNucleicAcidPhosphate_swigregister(OEIsNucleicAcidPhosphate)

class OESequenceAlignment(object):
    """Proxy of C++ OEBio::OESequenceAlignment 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__(OEBio::OESequenceAlignment self) -> OESequenceAlignment
        __init__(OEBio::OESequenceAlignment self, OESequenceAlignment rhs) -> OESequenceAlignment
        """
        this = _oechem.new_OESequenceAlignment(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESequenceAlignment
    __del__ = lambda self: None

    def GetImpl(self, *args) -> "OEBio::OESeqAlignImpl const *":
        """
        GetImpl(OESequenceAlignment self) -> OEBio::OESeqAlignImpl
        GetImpl(OESequenceAlignment self) -> OEBio::OESeqAlignImpl const *
        """
        return _oechem.OESequenceAlignment_GetImpl(self, *args)


    def Clear(self) -> "void":
        """Clear(OESequenceAlignment self)"""
        return _oechem.OESequenceAlignment_Clear(self)


    def IsValid(self):
      return _oechem.OESequenceAlignment___nonzero__(self)



    def GetMethod(self) -> "unsigned int":
        """GetMethod(OESequenceAlignment self) -> unsigned int"""
        return _oechem.OESequenceAlignment_GetMethod(self)


    def GetGap(self) -> "int":
        """GetGap(OESequenceAlignment self) -> int"""
        return _oechem.OESequenceAlignment_GetGap(self)


    def GetExtend(self) -> "int":
        """GetExtend(OESequenceAlignment self) -> int"""
        return _oechem.OESequenceAlignment_GetExtend(self)


    def GetScore(self) -> "int":
        """GetScore(OESequenceAlignment self) -> int"""
        return _oechem.OESequenceAlignment_GetScore(self)


    def GetSequenceIdentity(self) -> "double":
        """GetSequenceIdentity(OESequenceAlignment self) -> double"""
        return _oechem.OESequenceAlignment_GetSequenceIdentity(self)


    def GetSequenceSimilarity(self) -> "double":
        """GetSequenceSimilarity(OESequenceAlignment self) -> double"""
        return _oechem.OESequenceAlignment_GetSequenceSimilarity(self)


    def GetChainID(self, idx: 'unsigned int') -> "char":
        """GetChainID(OESequenceAlignment self, unsigned int idx) -> char"""
        return _oechem.OESequenceAlignment_GetChainID(self, idx)


    def GetMaxSeqIdx(self) -> "unsigned int":
        """GetMaxSeqIdx(OESequenceAlignment self) -> unsigned int"""
        return _oechem.OESequenceAlignment_GetMaxSeqIdx(self)


    def GetBackboneMatch(self, idx1: 'unsigned int'=0, idx2: 'unsigned int'=1) -> "OEChem::OEMatchBase const &":
        """
        GetBackboneMatch(OESequenceAlignment self, unsigned int idx1=0, unsigned int idx2=1) -> OEMatchBase
        GetBackboneMatch(OESequenceAlignment self, unsigned int idx1=0) -> OEMatchBase
        GetBackboneMatch(OESequenceAlignment self) -> OEMatchBase
        """
        return _oechem.OESequenceAlignment_GetBackboneMatch(self, idx1, idx2)


    def GetCAlphaMatch(self, idx1: 'unsigned int'=0, idx2: 'unsigned int'=1) -> "OEChem::OEMatchBase const &":
        """
        GetCAlphaMatch(OESequenceAlignment self, unsigned int idx1=0, unsigned int idx2=1) -> OEMatchBase
        GetCAlphaMatch(OESequenceAlignment self, unsigned int idx1=0) -> OEMatchBase
        GetCAlphaMatch(OESequenceAlignment self) -> OEMatchBase
        """
        return _oechem.OESequenceAlignment_GetCAlphaMatch(self, idx1, idx2)

OESequenceAlignment_swigregister = _oechem.OESequenceAlignment_swigregister
OESequenceAlignment_swigregister(OESequenceAlignment)


def OEGetAlignment(*args) -> "OEBio::OESequenceAlignment":
    """
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10, int extend=-2) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume) -> OESequenceAlignment
    OEGetAlignment(OEMolBase m1, OEMolBase m2) -> OESequenceAlignment
    """
    return _oechem.OEGetAlignment(*args)

def OEGetAlignments(*args) -> "OESystem::OEIterBase< OEBio::OESequenceAlignment > *":
    """
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10, int extend=-2) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2, unsigned int assume) -> OESystem::OEIterBase< OEBio::OESequenceAlignment >
    OEGetAlignments(OEMolBase m1, OEMolBase m2) -> OESystem::OEIterBase< OEBio::OESequenceAlignment > *
    """
    return _oechem.OEGetAlignments(*args)

def OEGetSimpleAlignment(*args) -> "OEBio::OESequenceAlignment":
    """
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10, int extend=-2) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method, int gap=-10) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume, unsigned int method) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2, unsigned int assume) -> OESequenceAlignment
    OEGetSimpleAlignment(OEMolBase m1, OEMolBase m2) -> OESequenceAlignment
    """
    return _oechem.OEGetSimpleAlignment(*args)

def OEWriteAlignment(ofs: 'oeostream', align: 'OESequenceAlignment', width: 'unsigned int'=50) -> "bool":
    """
    OEWriteAlignment(oeostream ofs, OESequenceAlignment align, unsigned int width=50) -> bool
    OEWriteAlignment(oeostream ofs, OESequenceAlignment align) -> bool
    """
    return _oechem.OEWriteAlignment(ofs, align, width)

def OEGetAlignmentMethodName(methodIdx: 'unsigned int') -> "char const *":
    """OEGetAlignmentMethodName(unsigned int methodIdx) -> char const *"""
    return _oechem.OEGetAlignmentMethodName(methodIdx)

def OEGetSpaceGroup(sgnumber: 'unsigned int', shortname: 'bool'=False) -> "PyObject *":
    """
    OEGetSpaceGroup(unsigned int sgnumber, bool shortname=False) -> PyObject
    OEGetSpaceGroup(unsigned int sgnumber) -> PyObject *
    """
    return _oechem.OEGetSpaceGroup(sgnumber, shortname)

def OEGetCrystalSymmetry(*args) -> "PyObject *":
    """
    OEGetCrystalSymmetry(OEMolBase mol) -> PyObject
    OEGetCrystalSymmetry(OECrystalSymmetryParams params, OEMolBase mol) -> PyObject *
    """
    return _oechem.OEGetCrystalSymmetry(*args)

def OEGetSpaceGroupNumber(ccp4Name: 'std::string const &') -> "int":
    """OEGetSpaceGroupNumber(std::string const & ccp4Name) -> int"""
    return _oechem.OEGetSpaceGroupNumber(ccp4Name)

def OEHasCrystalSymmetry(mol: 'OEMolBase') -> "bool":
    """OEHasCrystalSymmetry(OEMolBase mol) -> bool"""
    return _oechem.OEHasCrystalSymmetry(mol)

def OECopyCrystalSymmetry(dst: 'OEMolBase', src: 'OEMolBase') -> "bool":
    """OECopyCrystalSymmetry(OEMolBase dst, OEMolBase src) -> bool"""
    return _oechem.OECopyCrystalSymmetry(dst, src)

def OEBuildUnitCell(cell: 'OEMCMolBase', mol: 'OEMolBase') -> "bool":
    """OEBuildUnitCell(OEMCMolBase cell, OEMolBase mol) -> bool"""
    return _oechem.OEBuildUnitCell(cell, mol)

def OEExpandCrystalSymmetry(*args) -> "bool":
    """
    OEExpandCrystalSymmetry(OEMCMolBase operators, OEMolBase src) -> bool
    OEExpandCrystalSymmetry(OEMolBase mol, float radius, float * center=None) -> bool
    OEExpandCrystalSymmetry(OEMolBase mol, float radius) -> bool
    OEExpandCrystalSymmetry(OEMCMolBase expanded, OEMolBase mol, float radius, float * center=None) -> bool
    OEExpandCrystalSymmetry(OEMCMolBase expanded, OEMolBase mol, float radius) -> bool
    """
    return _oechem.OEExpandCrystalSymmetry(*args)
class OECrystalSymmetryParams(object):
    """Proxy of C++ OEBio::OECrystalSymmetryParams 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__(OEBio::OECrystalSymmetryParams self) -> OECrystalSymmetryParams
        __init__(OEBio::OECrystalSymmetryParams self, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber, unsigned int zvalue=0) -> OECrystalSymmetryParams
        __init__(OEBio::OECrystalSymmetryParams self, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber) -> OECrystalSymmetryParams
        """
        this = _oechem.new_OECrystalSymmetryParams(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def SetA(self, a: 'float') -> "void":
        """SetA(OECrystalSymmetryParams self, float a)"""
        return _oechem.OECrystalSymmetryParams_SetA(self, a)


    def SetB(self, b: 'float') -> "void":
        """SetB(OECrystalSymmetryParams self, float b)"""
        return _oechem.OECrystalSymmetryParams_SetB(self, b)


    def SetC(self, c: 'float') -> "void":
        """SetC(OECrystalSymmetryParams self, float c)"""
        return _oechem.OECrystalSymmetryParams_SetC(self, c)


    def SetAlpha(self, alpha: 'float') -> "void":
        """SetAlpha(OECrystalSymmetryParams self, float alpha)"""
        return _oechem.OECrystalSymmetryParams_SetAlpha(self, alpha)


    def SetBeta(self, beta: 'float') -> "void":
        """SetBeta(OECrystalSymmetryParams self, float beta)"""
        return _oechem.OECrystalSymmetryParams_SetBeta(self, beta)


    def SetGamma(self, gamma: 'float') -> "void":
        """SetGamma(OECrystalSymmetryParams self, float gamma)"""
        return _oechem.OECrystalSymmetryParams_SetGamma(self, gamma)


    def SetSpaceGroup(self, sgnumber: 'unsigned int') -> "void":
        """SetSpaceGroup(OECrystalSymmetryParams self, unsigned int sgnumber)"""
        return _oechem.OECrystalSymmetryParams_SetSpaceGroup(self, sgnumber)


    def SetZValue(self, zvalue: 'unsigned int') -> "void":
        """SetZValue(OECrystalSymmetryParams self, unsigned int zvalue)"""
        return _oechem.OECrystalSymmetryParams_SetZValue(self, zvalue)


    def GetA(self) -> "float":
        """GetA(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetA(self)


    def GetB(self) -> "float":
        """GetB(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetB(self)


    def GetC(self) -> "float":
        """GetC(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetC(self)


    def GetAlpha(self) -> "float":
        """GetAlpha(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetAlpha(self)


    def GetBeta(self) -> "float":
        """GetBeta(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetBeta(self)


    def GetGamma(self) -> "float":
        """GetGamma(OECrystalSymmetryParams self) -> float"""
        return _oechem.OECrystalSymmetryParams_GetGamma(self)


    def GetSpaceGroup(self) -> "unsigned int":
        """GetSpaceGroup(OECrystalSymmetryParams self) -> unsigned int"""
        return _oechem.OECrystalSymmetryParams_GetSpaceGroup(self)


    def GetZValue(self) -> "unsigned int":
        """GetZValue(OECrystalSymmetryParams self) -> unsigned int"""
        return _oechem.OECrystalSymmetryParams_GetZValue(self)

    __swig_destroy__ = _oechem.delete_OECrystalSymmetryParams
    __del__ = lambda self: None
OECrystalSymmetryParams_swigregister = _oechem.OECrystalSymmetryParams_swigregister
OECrystalSymmetryParams_swigregister(OECrystalSymmetryParams)


def OESetCrystalSymmetry(*args) -> "bool":
    """
    OESetCrystalSymmetry(OEMolBase mol, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber, bool force=False) -> bool
    OESetCrystalSymmetry(OEMolBase mol, float a, float b, float c, float alpha, float beta, float gamma, unsigned int sgnumber) -> bool
    OESetCrystalSymmetry(OEMolBase mol, OECrystalSymmetryParams params, bool force=False) -> bool
    OESetCrystalSymmetry(OEMolBase mol, OECrystalSymmetryParams params) -> bool
    """
    return _oechem.OESetCrystalSymmetry(*args)

def OESymmetryCartesianToFractional(mol: 'OEMolBase') -> "bool":
    """OESymmetryCartesianToFractional(OEMolBase mol) -> bool"""
    return _oechem.OESymmetryCartesianToFractional(mol)

def OESymmetryFractionalToCartesian(mol: 'OEMolBase') -> "bool":
    """OESymmetryFractionalToCartesian(OEMolBase mol) -> bool"""
    return _oechem.OESymmetryFractionalToCartesian(mol)
class OEResidueCategoryData(object):
    """Proxy of C++ OEBio::OEResidueCategoryData 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__ = _oechem.delete_OEResidueCategoryData
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEResidueCategoryData self) -> OEResidueCategoryData
        __init__(OEBio::OEResidueCategoryData self, OEResidueCategoryData rhs) -> OEResidueCategoryData
        """
        this = _oechem.new_OEResidueCategoryData(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def Size(self, category: 'unsigned int') -> "unsigned int":
        """Size(OEResidueCategoryData self, unsigned int category) -> unsigned int"""
        return _oechem.OEResidueCategoryData_Size(self, category)


    def GetEntries(self, category: 'unsigned int') -> "OESystem::OEIterBase< std::string const > *":
        """GetEntries(OEResidueCategoryData self, unsigned int category) -> OESystem::OEIterBase< std::string const > *"""
        return _oechem.OEResidueCategoryData_GetEntries(self, category)


    def FoundInDB(self, category: 'unsigned int', resName: 'std::string const &') -> "bool":
        """FoundInDB(OEResidueCategoryData self, unsigned int category, std::string const & resName) -> bool"""
        return _oechem.OEResidueCategoryData_FoundInDB(self, category, resName)


    def AddToDB(self, *args) -> "bool":
        """
        AddToDB(OEResidueCategoryData self, unsigned int category, std::string const & resName) -> bool
        AddToDB(OEResidueCategoryData self, unsigned int category, std::vector< std::string > const & list) -> bool
        """
        return _oechem.OEResidueCategoryData_AddToDB(self, *args)


    def RemoveFromDB(self, *args) -> "bool":
        """
        RemoveFromDB(OEResidueCategoryData self, unsigned int category, std::string const & resName) -> bool
        RemoveFromDB(OEResidueCategoryData self, unsigned int category, std::vector< std::string > const & list) -> bool
        """
        return _oechem.OEResidueCategoryData_RemoveFromDB(self, *args)


    def ClearDBCategory(self, category: 'unsigned int') -> "bool":
        """ClearDBCategory(OEResidueCategoryData self, unsigned int category) -> bool"""
        return _oechem.OEResidueCategoryData_ClearDBCategory(self, category)

OEResidueCategoryData_swigregister = _oechem.OEResidueCategoryData_swigregister
OEResidueCategoryData_swigregister(OEResidueCategoryData)


def OEGetResidueDatabaseCategoryName(category: 'unsigned int') -> "char const *":
    """OEGetResidueDatabaseCategoryName(unsigned int category) -> char const *"""
    return _oechem.OEGetResidueDatabaseCategoryName(category)

def OEMolComplexRoleFactory(category: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexRoleFactory(unsigned int category) -> OERole"""
    return _oechem.OEMolComplexRoleFactory(category)

def OEMolComplexOrderRoleFactory(order: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexOrderRoleFactory(unsigned int order) -> OERole"""
    return _oechem.OEMolComplexOrderRoleFactory(order)

def OEMolComplexSiteRoleFactory(site: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexSiteRoleFactory(unsigned int site) -> OERole"""
    return _oechem.OEMolComplexSiteRoleFactory(site)

def OEMolComplexSurfaceWatersRoleFactory(site: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexSurfaceWatersRoleFactory(unsigned int site) -> OERole"""
    return _oechem.OEMolComplexSurfaceWatersRoleFactory(site)

def OEMolComplexModelRoleFactory(model: 'unsigned int') -> "OESystem::OERole":
    """OEMolComplexModelRoleFactory(unsigned int model) -> OERole"""
    return _oechem.OEMolComplexModelRoleFactory(model)

def OEMolComplexChainRoleFactory(chain: 'char') -> "OESystem::OERole":
    """OEMolComplexChainRoleFactory(char chain) -> OERole"""
    return _oechem.OEMolComplexChainRoleFactory(chain)

def OEGetMolComplexFilterCategoryName(category: 'unsigned int') -> "char const *":
    """OEGetMolComplexFilterCategoryName(unsigned int category) -> char const *"""
    return _oechem.OEGetMolComplexFilterCategoryName(category)
class OEMolComplexFilter(OEUnaryRoleSetPred):
    """Proxy of C++ OEBio::OEMolComplexFilter 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__(OEBio::OEMolComplexFilter self) -> OEMolComplexFilter
        __init__(OEBio::OEMolComplexFilter self, OEMolComplexFilter rhs) -> OEMolComplexFilter
        __init__(OEBio::OEMolComplexFilter self, OEBio::OEMolComplexFilterImpl * impl) -> OEMolComplexFilter
        """
        this = _oechem.new_OEMolComplexFilter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEMolComplexFilter
    __del__ = lambda self: None

    def __call__(self, roles: 'OERoleSet') -> "bool":
        """__call__(OEMolComplexFilter self, OERoleSet roles) -> bool"""
        return _oechem.OEMolComplexFilter___call__(self, roles)


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


OEMolComplexFilter_swigregister = _oechem.OEMolComplexFilter_swigregister
OEMolComplexFilter_swigregister(OEMolComplexFilter)


def OEMolComplexFilterFactory(category: 'unsigned int') -> "OEBio::OEMolComplexFilter":
    """OEMolComplexFilterFactory(unsigned int category) -> OEMolComplexFilter"""
    return _oechem.OEMolComplexFilterFactory(category)

def OERoleMolComplexFilterFactory(r: 'OERole') -> "OEBio::OEMolComplexFilter":
    """OERoleMolComplexFilterFactory(OERole r) -> OEMolComplexFilter"""
    return _oechem.OERoleMolComplexFilterFactory(r)
class OEMolComplexCategorizerBase(object):
    """Proxy of C++ OEBio::OEMolComplexCategorizerBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEMolComplexCategorizerBase
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEBio::OEMolComplexCategorizerBase *":
        """CreateCopy(OEMolComplexCategorizerBase self) -> OEMolComplexCategorizerBase"""
        return _oechem.OEMolComplexCategorizerBase_CreateCopy(self)


    def __call__(self, roles: 'OERoleSet', counts: 'OEBio::OEMolComplexResCounts &', frag: 'OEAtomBondSet', isCovalent: 'bool'=False) -> "std::string":
        """
        __call__(OEMolComplexCategorizerBase self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag, bool isCovalent=False) -> std::string
        __call__(OEMolComplexCategorizerBase self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag) -> std::string
        """
        return _oechem.OEMolComplexCategorizerBase___call__(self, roles, counts, frag, isCovalent)


    def GetBundleCofactors(self) -> "bool":
        """GetBundleCofactors(OEMolComplexCategorizerBase self) -> bool"""
        return _oechem.OEMolComplexCategorizerBase_GetBundleCofactors(self)


    def UsingExplicitLigandName(self) -> "bool":
        """UsingExplicitLigandName(OEMolComplexCategorizerBase self) -> bool"""
        return _oechem.OEMolComplexCategorizerBase_UsingExplicitLigandName(self)

OEMolComplexCategorizerBase_swigregister = _oechem.OEMolComplexCategorizerBase_swigregister
OEMolComplexCategorizerBase_swigregister(OEMolComplexCategorizerBase)

class OEMolComplexCategorizer(OEMolComplexCategorizerBase):
    """Proxy of C++ OEBio::OEMolComplexCategorizer 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__ = _oechem.delete_OEMolComplexCategorizer
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEMolComplexCategorizer self, std::string const & ligName) -> OEMolComplexCategorizer
        __init__(OEBio::OEMolComplexCategorizer self) -> OEMolComplexCategorizer
        __init__(OEBio::OEMolComplexCategorizer self, OEMolComplexCategorizer rhs) -> OEMolComplexCategorizer
        """
        this = _oechem.new_OEMolComplexCategorizer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def CreateCopy(self) -> "OEBio::OEMolComplexCategorizerBase *":
        """CreateCopy(OEMolComplexCategorizer self) -> OEMolComplexCategorizerBase"""
        return _oechem.OEMolComplexCategorizer_CreateCopy(self)


    def GetBundleCofactors(self) -> "bool":
        """GetBundleCofactors(OEMolComplexCategorizer self) -> bool"""
        return _oechem.OEMolComplexCategorizer_GetBundleCofactors(self)


    def SetBundleCofactors(self, bundle: 'bool'=True) -> "void":
        """
        SetBundleCofactors(OEMolComplexCategorizer self, bool bundle=True)
        SetBundleCofactors(OEMolComplexCategorizer self)
        """
        return _oechem.OEMolComplexCategorizer_SetBundleCofactors(self, bundle)


    def GetMinLigAtoms(self) -> "unsigned int":
        """GetMinLigAtoms(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMinLigAtoms(self)


    def SetMinLigAtoms(self, n: 'unsigned int') -> "void":
        """SetMinLigAtoms(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMinLigAtoms(self, n)


    def GetMaxLigAtoms(self) -> "unsigned int":
        """GetMaxLigAtoms(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxLigAtoms(self)


    def SetMaxLigAtoms(self, n: 'unsigned int') -> "void":
        """SetMaxLigAtoms(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxLigAtoms(self, n)


    def GetMaxProteinAtoms(self) -> "unsigned int":
        """GetMaxProteinAtoms(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxProteinAtoms(self)


    def SetMaxProteinAtoms(self, n: 'unsigned int') -> "void":
        """SetMaxProteinAtoms(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxProteinAtoms(self, n)


    def GetMaxLigResidues(self) -> "unsigned int":
        """GetMaxLigResidues(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxLigResidues(self)


    def SetMaxLigResidues(self, n: 'unsigned int') -> "void":
        """SetMaxLigResidues(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxLigResidues(self, n)


    def GetMaxPeptideResidues(self) -> "unsigned int":
        """GetMaxPeptideResidues(OEMolComplexCategorizer self) -> unsigned int"""
        return _oechem.OEMolComplexCategorizer_GetMaxPeptideResidues(self)


    def SetMaxPeptideResidues(self, n: 'unsigned int') -> "void":
        """SetMaxPeptideResidues(OEMolComplexCategorizer self, unsigned int n)"""
        return _oechem.OEMolComplexCategorizer_SetMaxPeptideResidues(self, n)


    def AddLigandName(self, ligName: 'std::string const &') -> "void":
        """AddLigandName(OEMolComplexCategorizer self, std::string const & ligName)"""
        return _oechem.OEMolComplexCategorizer_AddLigandName(self, ligName)


    def UsingExplicitLigandName(self) -> "bool":
        """UsingExplicitLigandName(OEMolComplexCategorizer self) -> bool"""
        return _oechem.OEMolComplexCategorizer_UsingExplicitLigandName(self)


    def GetLigandSubSearch(self) -> "OEChem::OESubSearch":
        """GetLigandSubSearch(OEMolComplexCategorizer self) -> OESubSearch"""
        return _oechem.OEMolComplexCategorizer_GetLigandSubSearch(self)


    def SetLigandSubSearch(self, *args) -> "void":
        """
        SetLigandSubSearch(OEMolComplexCategorizer self, OESubSearch ss)
        SetLigandSubSearch(OEMolComplexCategorizer self, char const * smarts)
        """
        return _oechem.OEMolComplexCategorizer_SetLigandSubSearch(self, *args)


    def ClearLigandSubSearch(self) -> "void":
        """ClearLigandSubSearch(OEMolComplexCategorizer self)"""
        return _oechem.OEMolComplexCategorizer_ClearLigandSubSearch(self)


    def __call__(self, roles: 'OERoleSet', counts: 'OEBio::OEMolComplexResCounts &', frag: 'OEAtomBondSet', isCovalent: 'bool'=False) -> "std::string":
        """
        __call__(OEMolComplexCategorizer self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag, bool isCovalent=False) -> std::string
        __call__(OEMolComplexCategorizer self, OERoleSet roles, OEBio::OEMolComplexResCounts & counts, OEAtomBondSet frag) -> std::string
        """
        return _oechem.OEMolComplexCategorizer___call__(self, roles, counts, frag, isCovalent)


    def GetResidueCategoryData(self) -> "OEBio::OEResidueCategoryData *":
        """GetResidueCategoryData(OEMolComplexCategorizer self) -> OEResidueCategoryData"""
        return _oechem.OEMolComplexCategorizer_GetResidueCategoryData(self)


    def SetResidueCategoryData(self, db: 'OEResidueCategoryData') -> "void":
        """SetResidueCategoryData(OEMolComplexCategorizer self, OEResidueCategoryData db)"""
        return _oechem.OEMolComplexCategorizer_SetResidueCategoryData(self, db)

OEMolComplexCategorizer_swigregister = _oechem.OEMolComplexCategorizer_swigregister
OEMolComplexCategorizer_swigregister(OEMolComplexCategorizer)

class OESplitMolComplexOptions(object):
    """Proxy of C++ OEBio::OESplitMolComplexOptions 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__ = _oechem.delete_OESplitMolComplexOptions
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OESplitMolComplexOptions self, std::string const & ligName) -> OESplitMolComplexOptions
        __init__(OEBio::OESplitMolComplexOptions self) -> OESplitMolComplexOptions
        __init__(OEBio::OESplitMolComplexOptions self, OESplitMolComplexOptions rhs) -> OESplitMolComplexOptions
        """
        this = _oechem.new_OESplitMolComplexOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __eq__(self, rhs: 'OESplitMolComplexOptions') -> "bool":
        """__eq__(OESplitMolComplexOptions self, OESplitMolComplexOptions rhs) -> bool"""
        return _oechem.OESplitMolComplexOptions___eq__(self, rhs)


    def __ne__(self, rhs: 'OESplitMolComplexOptions') -> "bool":
        """__ne__(OESplitMolComplexOptions self, OESplitMolComplexOptions rhs) -> bool"""
        return _oechem.OESplitMolComplexOptions___ne__(self, rhs)


    def ResetFilters(self, *args) -> "void":
        """
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory, unsigned int protCategory, unsigned int waterCategory, unsigned int modelNo=1)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory, unsigned int protCategory, unsigned int waterCategory)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory, unsigned int protCategory)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False, unsigned int ligCategory)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1, bool surfaceWaters=False)
        ResetFilters(OESplitMolComplexOptions self, unsigned int site=1)
        ResetFilters(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_ResetFilters(self, *args)


    def GetSplitCovalent(self) -> "bool":
        """GetSplitCovalent(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetSplitCovalent(self)


    def SetSplitCovalent(self, split: 'bool'=True) -> "void":
        """
        SetSplitCovalent(OESplitMolComplexOptions self, bool split=True)
        SetSplitCovalent(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetSplitCovalent(self, split)


    def GetSplitCovalentCofactors(self) -> "bool":
        """GetSplitCovalentCofactors(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetSplitCovalentCofactors(self)


    def SetSplitCovalentCofactors(self, split: 'bool'=True) -> "void":
        """
        SetSplitCovalentCofactors(OESplitMolComplexOptions self, bool split=True)
        SetSplitCovalentCofactors(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetSplitCovalentCofactors(self, split)


    def GetMaxBindingSiteDist(self) -> "double":
        """GetMaxBindingSiteDist(OESplitMolComplexOptions self) -> double"""
        return _oechem.OESplitMolComplexOptions_GetMaxBindingSiteDist(self)


    def SetMaxBindingSiteDist(self, dist: 'double') -> "void":
        """SetMaxBindingSiteDist(OESplitMolComplexOptions self, double dist)"""
        return _oechem.OESplitMolComplexOptions_SetMaxBindingSiteDist(self, dist)


    def GetMaxSurfaceWaterDist(self) -> "double":
        """GetMaxSurfaceWaterDist(OESplitMolComplexOptions self) -> double"""
        return _oechem.OESplitMolComplexOptions_GetMaxSurfaceWaterDist(self)


    def SetMaxSurfaceWaterDist(self, dist: 'double') -> "void":
        """SetMaxSurfaceWaterDist(OESplitMolComplexOptions self, double dist)"""
        return _oechem.OESplitMolComplexOptions_SetMaxSurfaceWaterDist(self, dist)


    def GetSeparateResidues(self) -> "bool":
        """GetSeparateResidues(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetSeparateResidues(self)


    def SetSeparateResidues(self, separate: 'bool'=True) -> "void":
        """
        SetSeparateResidues(OESplitMolComplexOptions self, bool separate=True)
        SetSeparateResidues(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetSeparateResidues(self, separate)


    def GetCollectProteinByChain(self) -> "bool":
        """GetCollectProteinByChain(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetCollectProteinByChain(self)


    def SetCollectProteinByChain(self, collect: 'bool'=True) -> "void":
        """
        SetCollectProteinByChain(OESplitMolComplexOptions self, bool collect=True)
        SetCollectProteinByChain(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetCollectProteinByChain(self, collect)


    def GetPromoteUnknowns(self) -> "bool":
        """GetPromoteUnknowns(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetPromoteUnknowns(self)


    def SetPromoteUnknowns(self, promote: 'bool'=True) -> "void":
        """
        SetPromoteUnknowns(OESplitMolComplexOptions self, bool promote=True)
        SetPromoteUnknowns(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetPromoteUnknowns(self, promote)


    def GetAdjustHCount(self) -> "bool":
        """GetAdjustHCount(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetAdjustHCount(self)


    def SetAdjustHCount(self, adjust: 'bool'=True) -> "void":
        """
        SetAdjustHCount(OESplitMolComplexOptions self, bool adjust=True)
        SetAdjustHCount(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetAdjustHCount(self, adjust)


    def GetAddRGroup(self) -> "bool":
        """GetAddRGroup(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetAddRGroup(self)


    def SetAddRGroup(self, addR: 'bool'=True) -> "void":
        """
        SetAddRGroup(OESplitMolComplexOptions self, bool addR=True)
        SetAddRGroup(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetAddRGroup(self, addR)


    def GetAssumptions(self) -> "unsigned int":
        """GetAssumptions(OESplitMolComplexOptions self) -> unsigned int"""
        return _oechem.OESplitMolComplexOptions_GetAssumptions(self)


    def SetAssumptions(self, assume: 'unsigned int') -> "void":
        """SetAssumptions(OESplitMolComplexOptions self, unsigned int assume)"""
        return _oechem.OESplitMolComplexOptions_SetAssumptions(self, assume)


    def GetWarnNoLigand(self) -> "bool":
        """GetWarnNoLigand(OESplitMolComplexOptions self) -> bool"""
        return _oechem.OESplitMolComplexOptions_GetWarnNoLigand(self)


    def SetWarnNoLigand(self, warn: 'bool'=True) -> "void":
        """
        SetWarnNoLigand(OESplitMolComplexOptions self, bool warn=True)
        SetWarnNoLigand(OESplitMolComplexOptions self)
        """
        return _oechem.OESplitMolComplexOptions_SetWarnNoLigand(self, warn)


    def GetCategorizer(self) -> "OEBio::OEMolComplexCategorizerBase *":
        """GetCategorizer(OESplitMolComplexOptions self) -> OEMolComplexCategorizerBase"""
        return _oechem.OESplitMolComplexOptions_GetCategorizer(self)


    def SetCategorizer(self, cat: 'OEMolComplexCategorizerBase') -> "void":
        """SetCategorizer(OESplitMolComplexOptions self, OEMolComplexCategorizerBase cat)"""
        return _oechem.OESplitMolComplexOptions_SetCategorizer(self, cat)


    def GetLigandFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetLigandFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetLigandFilter(self)


    def GetProteinFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetProteinFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetProteinFilter(self)


    def GetWaterFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetWaterFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetWaterFilter(self)


    def GetOtherFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetOtherFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetOtherFilter(self)


    def GetCombinedFilter(self) -> "OESystem::OEUnaryPredicate< OESystem::OERoleSet > *":
        """GetCombinedFilter(OESplitMolComplexOptions self) -> OEUnaryRoleSetPred"""
        return _oechem.OESplitMolComplexOptions_GetCombinedFilter(self)


    def SetLigandFilter(self, f: 'OEUnaryRoleSetPred') -> "void":
        """SetLigandFilter(OESplitMolComplexOptions self, OEUnaryRoleSetPred f)"""
        return _oechem.OESplitMolComplexOptions_SetLigandFilter(self, f)


    def SetProteinFilter(self, f: 'OEUnaryRoleSetPred') -> "void":
        """SetProteinFilter(OESplitMolComplexOptions self, OEUnaryRoleSetPred f)"""
        return _oechem.OESplitMolComplexOptions_SetProteinFilter(self, f)


    def SetWaterFilter(self, f: 'OEUnaryRoleSetPred') -> "void":
        """SetWaterFilter(OESplitMolComplexOptions self, OEUnaryRoleSetPred f)"""
        return _oechem.OESplitMolComplexOptions_SetWaterFilter(self, f)

OESplitMolComplexOptions_swigregister = _oechem.OESplitMolComplexOptions_swigregister
OESplitMolComplexOptions_swigregister(OESplitMolComplexOptions)


def OESplitMolComplex(*args) -> "bool":
    """
    OESplitMolComplex(OEMolBase lig, OEMolBase prot, OEMolBase waters, OEMolBase other, OEMolBase mol, OESplitMolComplexOptions opt) -> bool
    OESplitMolComplex(OEMolBase lig, OEMolBase prot, OEMolBase waters, OEMolBase other, OEMolBase mol) -> bool
    """
    return _oechem.OESplitMolComplex(*args)

def OEGetMolComplexComponents(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEGetMolComplexComponents(OEMolBase mol, OESplitMolComplexOptions opt) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetMolComplexComponents(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEGetMolComplexComponents(OEMolBase mol, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEGetMolComplexComponents(*args)

def OEClearMolComplexSDData(*args) -> "void":
    """
    OEClearMolComplexSDData(OEMolBase mol, std::string const & prefix)
    OEClearMolComplexSDData(OEMolBase mol)
    """
    return _oechem.OEClearMolComplexSDData(*args)

def OEConfigureSplitMolComplexOptions(*args) -> "bool":
    """
    OEConfigureSplitMolComplexOptions(OEInterface itf, unsigned int config) -> bool
    OEConfigureSplitMolComplexOptions(OEInterface itf) -> bool
    """
    return _oechem.OEConfigureSplitMolComplexOptions(*args)

def OESetupSplitMolComplexOptions(*args) -> "bool":
    """
    OESetupSplitMolComplexOptions(OESplitMolComplexOptions opts, OEInterface itf, unsigned int siteOverride, unsigned int modelOverride) -> bool
    OESetupSplitMolComplexOptions(OESplitMolComplexOptions opts, OEInterface itf, unsigned int siteOverride) -> bool
    OESetupSplitMolComplexOptions(OESplitMolComplexOptions opts, OEInterface itf) -> bool
    """
    return _oechem.OESetupSplitMolComplexOptions(*args)

def OEGetMolComplexFragments(*args) -> "bool":
    """
    OEGetMolComplexFragments(OEAtomBondSetVector frags, OEMolBase mol, OESplitMolComplexOptions opt) -> bool
    OEGetMolComplexFragments(OEAtomBondSetVector frags, OEMolBase mol) -> bool
    """
    return _oechem.OEGetMolComplexFragments(*args)

def OECountMolComplexSites(*args) -> "unsigned int":
    """
    OECountMolComplexSites(OEMolBase mol, OESplitMolComplexOptions opt) -> unsigned int
    OECountMolComplexSites(OEMolBase mol) -> unsigned int
    OECountMolComplexSites(OEAtomBondSetVector frags) -> unsigned int
    """
    return _oechem.OECountMolComplexSites(*args)

def OECombineMolComplexFragments(*args) -> "bool":
    """
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter, OEChem::OEAtomBase ** atomMap=None, OEChem::OEBondBase ** bondMap=None) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter, OEChem::OEAtomBase ** atomMap=None) -> bool
    OECombineMolComplexFragments(OEMolBase dst, OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter) -> bool
    """
    return _oechem.OECombineMolComplexFragments(*args)

def OEFilterMolComplexFragments(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEFilterMolComplexFragments(OEAtomBondSetVector frags, OESplitMolComplexOptions opt) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEFilterMolComplexFragments(OEAtomBondSetVector frags) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEFilterMolComplexFragments(OEAtomBondSetVector frags, OESplitMolComplexOptions opt, OEUnaryRoleSetPred filter) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEFilterMolComplexFragments(*args)

def OEGetPlaceHydrogensMoverClassName(moverClass: 'unsigned int') -> "std::string":
    """OEGetPlaceHydrogensMoverClassName(unsigned int moverClass) -> std::string"""
    return _oechem.OEGetPlaceHydrogensMoverClassName(moverClass)
class OEPlaceHydrogensMoverNote(object):
    """Proxy of C++ OEBio::OEPlaceHydrogensMoverNote 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__ = _oechem.delete_OEPlaceHydrogensMoverNote
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEPlaceHydrogensMoverNote self) -> OEPlaceHydrogensMoverNote
        __init__(OEBio::OEPlaceHydrogensMoverNote self, OEPlaceHydrogensMoverNote rhs) -> OEPlaceHydrogensMoverNote
        """
        this = _oechem.new_OEPlaceHydrogensMoverNote(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetStateIdx(self) -> "unsigned int":
        """GetStateIdx(OEPlaceHydrogensMoverNote self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensMoverNote_GetStateIdx(self)


    def GetStateName(self) -> "std::string":
        """GetStateName(OEPlaceHydrogensMoverNote self) -> std::string"""
        return _oechem.OEPlaceHydrogensMoverNote_GetStateName(self)


    def GetLabel(self) -> "std::string":
        """GetLabel(OEPlaceHydrogensMoverNote self) -> std::string"""
        return _oechem.OEPlaceHydrogensMoverNote_GetLabel(self)


    def GetMoverClass(self) -> "unsigned int":
        """GetMoverClass(OEPlaceHydrogensMoverNote self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensMoverNote_GetMoverClass(self)


    def GetAngle(self) -> "double":
        """GetAngle(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetAngle(self)


    def IsFlippable(self) -> "bool":
        """IsFlippable(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsFlippable(self)


    def IsFlipped(self) -> "bool":
        """IsFlipped(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsFlipped(self)


    def IsIonizable(self) -> "bool":
        """IsIonizable(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsIonizable(self)


    def IsIonized(self) -> "bool":
        """IsIonized(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsIonized(self)


    def IsRestrained(self) -> "bool":
        """IsRestrained(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_IsRestrained(self)


    def GetScore(self) -> "double":
        """GetScore(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetScore(self)


    def HasBadClash(self) -> "bool":
        """HasBadClash(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_HasBadClash(self)


    def GetOriginalBestClusterScore(self) -> "double":
        """GetOriginalBestClusterScore(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetOriginalBestClusterScore(self)


    def GetFlippedBestClusterScore(self) -> "double":
        """GetFlippedBestClusterScore(OEPlaceHydrogensMoverNote self) -> double"""
        return _oechem.OEPlaceHydrogensMoverNote_GetFlippedBestClusterScore(self)


    def HasOriginalBadClusterClash(self) -> "bool":
        """HasOriginalBadClusterClash(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_HasOriginalBadClusterClash(self)


    def HasFlippedBadClusterClash(self) -> "bool":
        """HasFlippedBadClusterClash(OEPlaceHydrogensMoverNote self) -> bool"""
        return _oechem.OEPlaceHydrogensMoverNote_HasFlippedBadClusterClash(self)


    def Describe(self) -> "std::string":
        """Describe(OEPlaceHydrogensMoverNote self) -> std::string"""
        return _oechem.OEPlaceHydrogensMoverNote_Describe(self)


    def GetReferenceCoords(self, *args) -> "PyObject *":
        """
        GetReferenceCoords(OEPlaceHydrogensMoverNote self, double * xyz) -> bool
        GetReferenceCoords(OEPlaceHydrogensMoverNote self) -> PyObject *
        """
        return _oechem.OEPlaceHydrogensMoverNote_GetReferenceCoords(self, *args)

OEPlaceHydrogensMoverNote_swigregister = _oechem.OEPlaceHydrogensMoverNote_swigregister
OEPlaceHydrogensMoverNote_swigregister(OEPlaceHydrogensMoverNote)

class OEPlaceHydrogensDetails(object):
    """Proxy of C++ OEBio::OEPlaceHydrogensDetails 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__ = _oechem.delete_OEPlaceHydrogensDetails
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEPlaceHydrogensDetails self) -> OEPlaceHydrogensDetails
        __init__(OEBio::OEPlaceHydrogensDetails self, OEPlaceHydrogensDetails rhs) -> OEPlaceHydrogensDetails
        """
        this = _oechem.new_OEPlaceHydrogensDetails(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self) -> "bool":
        """IsValid(OEPlaceHydrogensDetails self) -> bool"""
        return _oechem.OEPlaceHydrogensDetails_IsValid(self)


    def GetNumHydrogensStandardized(self) -> "unsigned int":
        """GetNumHydrogensStandardized(OEPlaceHydrogensDetails self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumHydrogensStandardized(self)


    def GetNumFlips(self) -> "unsigned int":
        """GetNumFlips(OEPlaceHydrogensDetails self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumFlips(self)


    def GetFlipBias(self) -> "double":
        """GetFlipBias(OEPlaceHydrogensDetails self) -> double"""
        return _oechem.OEPlaceHydrogensDetails_GetFlipBias(self)


    def GetNumClusters(self) -> "unsigned int":
        """GetNumClusters(OEPlaceHydrogensDetails self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumClusters(self)


    def GetNumMovers(self, clusterIdx: 'unsigned int') -> "unsigned int":
        """GetNumMovers(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> unsigned int"""
        return _oechem.OEPlaceHydrogensDetails_GetNumMovers(self, clusterIdx)


    def GetClusterScore(self, clusterIdx: 'unsigned int') -> "double":
        """GetClusterScore(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> double"""
        return _oechem.OEPlaceHydrogensDetails_GetClusterScore(self, clusterIdx)


    def ClusterHasBadClash(self, clusterIdx: 'unsigned int') -> "bool":
        """ClusterHasBadClash(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> bool"""
        return _oechem.OEPlaceHydrogensDetails_ClusterHasBadClash(self, clusterIdx)


    def IsSingleton(self, clusterIdx: 'unsigned int') -> "bool":
        """IsSingleton(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> bool"""
        return _oechem.OEPlaceHydrogensDetails_IsSingleton(self, clusterIdx)


    def GetMoverNotes(self, clusterIdx: 'unsigned int') -> "OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *":
        """GetMoverNotes(OEPlaceHydrogensDetails self, unsigned int clusterIdx) -> OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *"""
        return _oechem.OEPlaceHydrogensDetails_GetMoverNotes(self, clusterIdx)


    def Describe(self, showBackground: 'bool'=False) -> "std::string":
        """
        Describe(OEPlaceHydrogensDetails self, bool showBackground=False) -> std::string
        Describe(OEPlaceHydrogensDetails self) -> std::string
        """
        return _oechem.OEPlaceHydrogensDetails_Describe(self, showBackground)

OEPlaceHydrogensDetails_swigregister = _oechem.OEPlaceHydrogensDetails_swigregister
OEPlaceHydrogensDetails_swigregister(OEPlaceHydrogensDetails)

class OEPlaceHydrogensOptions(object):
    """Proxy of C++ OEBio::OEPlaceHydrogensOptions 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__ = _oechem.delete_OEPlaceHydrogensOptions
    __del__ = lambda self: None

    def __init__(self, *args):
        """
        __init__(OEBio::OEPlaceHydrogensOptions self, bool compatibleAlts=False) -> OEPlaceHydrogensOptions
        __init__(OEBio::OEPlaceHydrogensOptions self) -> OEPlaceHydrogensOptions
        __init__(OEBio::OEPlaceHydrogensOptions self, OEPlaceHydrogensOptions rhs) -> OEPlaceHydrogensOptions
        """
        this = _oechem.new_OEPlaceHydrogensOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetAltsMustBeCompatible(self) -> "bool":
        """GetAltsMustBeCompatible(OEPlaceHydrogensOptions self) -> bool"""
        return _oechem.OEPlaceHydrogensOptions_GetAltsMustBeCompatible(self)


    def SetAltsMustBeCompatible(self, compatible: 'bool'=True) -> "void":
        """
        SetAltsMustBeCompatible(OEPlaceHydrogensOptions self, bool compatible=True)
        SetAltsMustBeCompatible(OEPlaceHydrogensOptions self)
        """
        return _oechem.OEPlaceHydrogensOptions_SetAltsMustBeCompatible(self, compatible)


    def GetStandardizeBondLen(self) -> "bool":
        """GetStandardizeBondLen(OEPlaceHydrogensOptions self) -> bool"""
        return _oechem.OEPlaceHydrogensOptions_GetStandardizeBondLen(self)


    def SetStandardizeBondLen(self, standardize: 'bool'=True) -> "void":
        """
        SetStandardizeBondLen(OEPlaceHydrogensOptions self, bool standardize=True)
        SetStandardizeBondLen(OEPlaceHydrogensOptions self)
        """
        return _oechem.OEPlaceHydrogensOptions_SetStandardizeBondLen(self, standardize)


    def GetFlipBiasScale(self) -> "double":
        """GetFlipBiasScale(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetFlipBiasScale(self)


    def SetFlipBiasScale(self, scale: 'double') -> "void":
        """SetFlipBiasScale(OEPlaceHydrogensOptions self, double scale)"""
        return _oechem.OEPlaceHydrogensOptions_SetFlipBiasScale(self, scale)


    def GetFlipBias(self) -> "double":
        """GetFlipBias(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetFlipBias(self)


    def GetBadClashOverlapDistance(self) -> "double":
        """GetBadClashOverlapDistance(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetBadClashOverlapDistance(self)


    def SetBadClashOverlapDistance(self, overlap: 'double') -> "void":
        """SetBadClashOverlapDistance(OEPlaceHydrogensOptions self, double overlap)"""
        return _oechem.OEPlaceHydrogensOptions_SetBadClashOverlapDistance(self, overlap)


    def GetWaterProcessing(self) -> "unsigned int":
        """GetWaterProcessing(OEPlaceHydrogensOptions self) -> unsigned int"""
        return _oechem.OEPlaceHydrogensOptions_GetWaterProcessing(self)


    def SetWaterProcessing(self, process: 'unsigned int') -> "void":
        """SetWaterProcessing(OEPlaceHydrogensOptions self, unsigned int process)"""
        return _oechem.OEPlaceHydrogensOptions_SetWaterProcessing(self, process)


    def GetMaxSubstateCutoff(self) -> "double":
        """GetMaxSubstateCutoff(OEPlaceHydrogensOptions self) -> double"""
        return _oechem.OEPlaceHydrogensOptions_GetMaxSubstateCutoff(self)


    def SetMaxSubstateCutoff(self, maxStates: 'double') -> "void":
        """SetMaxSubstateCutoff(OEPlaceHydrogensOptions self, double maxStates)"""
        return _oechem.OEPlaceHydrogensOptions_SetMaxSubstateCutoff(self, maxStates)


    def GetAddMetadata(self) -> "bool":
        """GetAddMetadata(OEPlaceHydrogensOptions self) -> bool"""
        return _oechem.OEPlaceHydrogensOptions_GetAddMetadata(self)


    def SetAddMetadata(self, metadata: 'bool'=True) -> "void":
        """
        SetAddMetadata(OEPlaceHydrogensOptions self, bool metadata=True)
        SetAddMetadata(OEPlaceHydrogensOptions self)
        """
        return _oechem.OEPlaceHydrogensOptions_SetAddMetadata(self, metadata)


    def GetBypassPredicate(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetBypassPredicate(OEPlaceHydrogensOptions self) -> OEUnaryAtomPred"""
        return _oechem.OEPlaceHydrogensOptions_GetBypassPredicate(self)


    def SetBypassPredicate(self, pred: 'OEUnaryAtomPred') -> "void":
        """SetBypassPredicate(OEPlaceHydrogensOptions self, OEUnaryAtomPred pred)"""
        return _oechem.OEPlaceHydrogensOptions_SetBypassPredicate(self, pred)


    def GetNoFlipPredicate(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetNoFlipPredicate(OEPlaceHydrogensOptions self) -> OEUnaryAtomPred"""
        return _oechem.OEPlaceHydrogensOptions_GetNoFlipPredicate(self)


    def SetNoFlipPredicate(self, pred: 'OEUnaryAtomPred') -> "void":
        """SetNoFlipPredicate(OEPlaceHydrogensOptions self, OEUnaryAtomPred pred)"""
        return _oechem.OEPlaceHydrogensOptions_SetNoFlipPredicate(self, pred)


    def GetFlipPredicate(self) -> "OESystem::OEUnaryPredicate< OEChem::OEAtomBase > *":
        """GetFlipPredicate(OEPlaceHydrogensOptions self) -> OEUnaryAtomPred"""
        return _oechem.OEPlaceHydrogensOptions_GetFlipPredicate(self)


    def SetFlipPredicate(self, pred: 'OEUnaryAtomPred') -> "void":
        """SetFlipPredicate(OEPlaceHydrogensOptions self, OEUnaryAtomPred pred)"""
        return _oechem.OEPlaceHydrogensOptions_SetFlipPredicate(self, pred)

OEPlaceHydrogensOptions_swigregister = _oechem.OEPlaceHydrogensOptions_swigregister
OEPlaceHydrogensOptions_swigregister(OEPlaceHydrogensOptions)


def OEPlaceHydrogens(*args) -> "bool":
    """
    OEPlaceHydrogens(OEMolBase mol, OEPlaceHydrogensOptions opts) -> bool
    OEPlaceHydrogens(OEMolBase mol) -> bool
    OEPlaceHydrogens(OEMolBase mol, OEPlaceHydrogensDetails details, OEPlaceHydrogensOptions opts) -> bool
    OEPlaceHydrogens(OEMolBase mol, OEPlaceHydrogensDetails details) -> bool
    """
    return _oechem.OEPlaceHydrogens(*args)

def OEHasPlaceHydrogensMetadata(mol: 'OEMolBase') -> "bool":
    """OEHasPlaceHydrogensMetadata(OEMolBase mol) -> bool"""
    return _oechem.OEHasPlaceHydrogensMetadata(mol)

def OEGetPlaceHydrogensMetadata(mol: 'OEMolBase') -> "std::string":
    """OEGetPlaceHydrogensMetadata(OEMolBase mol) -> std::string"""
    return _oechem.OEGetPlaceHydrogensMetadata(mol)

def OEClearPlaceHydrogensMetadata(mol: 'OEMolBase') -> "void":
    """OEClearPlaceHydrogensMetadata(OEMolBase mol)"""
    return _oechem.OEClearPlaceHydrogensMetadata(mol)
class OEPlaceHydrogensMoverNoteIter(object):
    """Proxy of C++ OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> 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<(OEBio::OEPlaceHydrogensMoverNote)> self) -> OEPlaceHydrogensMoverNoteIter
        __init__(OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> self, OEPlaceHydrogensMoverNoteIter rhs) -> OEPlaceHydrogensMoverNoteIter
        __init__(OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> self, OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > * rhs) -> OEPlaceHydrogensMoverNoteIter
        __init__(OESystem::OEIter<(OEBio::OEPlaceHydrogensMoverNote)> self, OESystem::OEIterBase< OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote >::NonConstA > * rhs) -> OEPlaceHydrogensMoverNoteIter
        """
        this = _oechem.new_OEPlaceHydrogensMoverNoteIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEPlaceHydrogensMoverNoteIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *":
        """Copy(OEPlaceHydrogensMoverNoteIter self) -> OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > *"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEPlaceHydrogensMoverNoteIter self, OESystem::OEIterBase< OEBio::OEPlaceHydrogensMoverNote > * ib)
        Push(OEPlaceHydrogensMoverNoteIter self, OEPlaceHydrogensMoverNoteIter iter)
        """
        return _oechem.OEPlaceHydrogensMoverNoteIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEBio::OEPlaceHydrogensMoverNote,OEBio::OEPlaceHydrogensMoverNote > const &') -> "void":
        """Sort(OEPlaceHydrogensMoverNoteIter self, OESystem::OEBinaryPredicate< OEBio::OEPlaceHydrogensMoverNote,OEBio::OEPlaceHydrogensMoverNote > const & sort_criterion)"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """ToFirst(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """ToLast(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_ToLast(self)


    def __ref__(self) -> "OEBio::OEPlaceHydrogensMoverNote &":
        """__ref__(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNote"""
        return _oechem.OEPlaceHydrogensMoverNoteIter___ref__(self)


    def IsValid(self):
      return _oechem.OEPlaceHydrogensMoverNoteIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEPlaceHydrogensMoverNoteIter self) -> PyObject *"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_next(self)


    def Target(self) -> "OEBio::OEPlaceHydrogensMoverNote &":
        """Target(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNote"""
        return _oechem.OEPlaceHydrogensMoverNoteIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """
        Next(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter
        Next(OEPlaceHydrogensMoverNoteIter self, int i) -> OEPlaceHydrogensMoverNoteIter
        """
        return _oechem.OEPlaceHydrogensMoverNoteIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEBio::OEPlaceHydrogensMoverNote > &":
        """
        Prev(OEPlaceHydrogensMoverNoteIter self) -> OEPlaceHydrogensMoverNoteIter
        Prev(OEPlaceHydrogensMoverNoteIter self, int i) -> OEPlaceHydrogensMoverNoteIter
        """
        return _oechem.OEPlaceHydrogensMoverNoteIter_Prev(self, *args)

OEPlaceHydrogensMoverNoteIter_swigregister = _oechem.OEPlaceHydrogensMoverNoteIter_swigregister
OEPlaceHydrogensMoverNoteIter_swigregister(OEPlaceHydrogensMoverNoteIter)


_oechem.OE_OEBIO_VERSION_swigconstant(_oechem)
OE_OEBIO_VERSION = _oechem.OE_OEBIO_VERSION

def OEBioGetRelease() -> "char const *":
    """OEBioGetRelease() -> char const *"""
    return _oechem.OEBioGetRelease()

def OEBioGetVersion() -> "unsigned int":
    """OEBioGetVersion() -> unsigned int"""
    return _oechem.OEBioGetVersion()

def OEBioGetArch() -> "char const *":
    """OEBioGetArch() -> char const *"""
    return _oechem.OEBioGetArch()

def OEBioGetPlatform() -> "char const *":
    """OEBioGetPlatform() -> char const *"""
    return _oechem.OEBioGetPlatform()

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

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

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

OEThrow = cvar.OEThrow

OEAroModelUndefined = cvar.OEAroModelUndefined
OEAroModelTripos = cvar.OEAroModelTripos
OEAroModelOpenEye = cvar.OEAroModelOpenEye
OEAroModelDaylight = cvar.OEAroModelDaylight
OEAroModelMMFF = cvar.OEAroModelMMFF
OEAroModelMDL = cvar.OEAroModelMDL

OENormModelDefault = cvar.OENormModelDefault
OENormModelSymmetry = cvar.OENormModelSymmetry
OENormModelPhysical = cvar.OENormModelPhysical
OENormModelHyperVal = cvar.OENormModelHyperVal
OENormModelDative = cvar.OENormModelDative

OEBlack = cvar.OEBlack
OEWhite = cvar.OEWhite
OERed = cvar.OERed
OEGreen = cvar.OEGreen
OEBlue = cvar.OEBlue
OEYellow = cvar.OEYellow
OECyan = cvar.OECyan
OEMagenta = cvar.OEMagenta
OEOrange = cvar.OEOrange
OEPink = cvar.OEPink
OEGrey = cvar.OEGrey
OEPurple = cvar.OEPurple
OERoyalBlue = cvar.OERoyalBlue
OEOliveBrown = cvar.OEOliveBrown
OEOliveGreen = cvar.OEOliveGreen
OEOliveGrey = cvar.OEOliveGrey
OELimeGreen = cvar.OELimeGreen

OEDarkRed = cvar.OEDarkRed
OEDarkGreen = cvar.OEDarkGreen
OEDarkBlue = cvar.OEDarkBlue
OEDarkYellow = cvar.OEDarkYellow
OEDarkCyan = cvar.OEDarkCyan
OEDarkMagenta = cvar.OEDarkMagenta
OEDarkOrange = cvar.OEDarkOrange
OEDarkGrey = cvar.OEDarkGrey
OEDarkRose = cvar.OEDarkRose
OEDarkBrown = cvar.OEDarkBrown
OEDarkSalmon = cvar.OEDarkSalmon
OEDarkPurple = cvar.OEDarkPurple

OEMediumBrown = cvar.OEMediumBrown
OEMediumBlue = cvar.OEMediumBlue
OEMediumYellow = cvar.OEMediumYellow
OEMediumGreen = cvar.OEMediumGreen
OEMediumOrange = cvar.OEMediumOrange
OEMediumPurple = cvar.OEMediumPurple
OEMediumSalmon = cvar.OEMediumSalmon

OELightBlue = cvar.OELightBlue
OELightGrey = cvar.OELightGrey
OELightPurple = cvar.OELightPurple
OELightSalmon = cvar.OELightSalmon
OELightBrown = cvar.OELightBrown
OELightOrange = cvar.OELightOrange
OELightGreen = cvar.OELightGreen



OEMolBase.GetAtomIter = OEMolBase.GetAtoms
OEMolBase.GetBondIter = OEMolBase.GetBonds

OEGraphMol.GetAtomIter = OEGraphMol.GetAtoms
OEGraphMol.GetBondIter = OEGraphMol.GetBonds

OEMCMolBase.GetConfIter = OEMCMolBase.GetConfs

OEMol.GetAtomIter = OEMol.GetAtoms
OEMol.GetBondIter = OEMol.GetBonds
OEMol.GetConfIter = OEMol.GetConfs

OEQMol.GetAtomIter = OEQMol.GetAtoms
OEQMol.GetBondIter = OEQMol.GetBonds

OEAtomBase.GetAtomIter = OEAtomBase.GetAtoms
OEAtomBase.GetBondIter = OEAtomBase.GetBonds

OEMatchBase.GetAtomIter = OEMatchBase.GetAtoms
OEMatchBase.GetBondIter = OEMatchBase.GetBonds

MatchGraphMol = OEMatchGraphMol
MatchMolBase = OEMatchMolBase
MatchAtom = OEMatchAtom

OEMCSSearch.GetMatchIter = OEMCSSearch.Match
OECliqueSearch.GetMatchIter = OECliqueSearch.Match
OESubSearch.GetMatchIter = OESubSearch.Match

OEAcyclicPathIter = OEAcyclicPath
OEGetSDDataIter = OEGetSDDataPairs
OEGetPDBDataIter = OEGetPDBDataPairs

HasAtomIdx = OEHasAtomIdx
HasBondIdx = OEHasBondIdx
HasConfIdx = OEHasConfIdx

HasAtomName = OEHasAtomName
HasChainID = OEHasChainID
HasResidueNumber = OEHasResidueNumber
HasFragmentNumber = OEHasFragmentNumber
HasMapIdx = OEHasMapIdx
HasAtomicNum = OEHasAtomicNum
IsRGroup = OEIsRGroup
NthAtom = OENthAtom

IsHydrogen = OEIsHydrogen
IsHeavy = OEIsHeavy
IsPolar = OEIsPolar
IsPolarHydrogen =  OEIsPolarHydrogen
IsCarbon =  OEIsCarbon
IsCAlpha =  OEIsCAlpha
IsNitrogen =  OEIsNitrogen
IsOxygen = OEIsOxygen
IsHalogen = OEIsHalogen
IsSulfur = OEIsSulfur
IsPhosphorus = OEIsPhosphorus
IsAromaticAtom = OEIsAromaticAtom
IsHalide = OEIsHalide
AtomIsInRing = OEAtomIsInRing
IsChiralAtom = OEIsChiralAtom
HasAtomStereoSpecified = OEHasAtomStereoSpecified
HasAlphaBetaUnsat = OEHasAlphaBetaUnsat
AtomIsInResidue = OEAtomIsInResidue

HasOrder = OEHasOrder
BondIsInRing = OEBondIsInRing
IsRotor = OEIsRotor
IsChiralBond = OEIsChiralBond
HasBondStereoSpecified = OEHasBondStereoSpecified
IsAromaticBond = OEIsAromaticBond
GetNbrAtom = OEGetNbrAtom

InSamePart = OEInSamePart


class OEAnnotation(OEBase):
    """Proxy of C++ OESystem::OEAnnotation 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::OEAnnotation self) -> OEAnnotation
        __init__(OESystem::OEAnnotation self, unsigned int type, char const * title=None) -> OEAnnotation
        __init__(OESystem::OEAnnotation self, unsigned int type) -> OEAnnotation
        __init__(OESystem::OEAnnotation self, OEAnnotation rhs) -> OEAnnotation
        """
        this = _oechem.new_OEAnnotation(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAnnotation
    __del__ = lambda self: None

    def GetDataType(self) -> "void const *":
        """GetDataType(OEAnnotation self) -> void const *"""
        return _oechem.OEAnnotation_GetDataType(self)


    def IsDataType(self, type: 'void const *') -> "bool":
        """IsDataType(OEAnnotation self, void const * type) -> bool"""
        return _oechem.OEAnnotation_IsDataType(self, type)


    def CreateCopy(self) -> "OESystem::OEBase *":
        """CreateCopy(OEAnnotation self) -> OEBase"""
        return _oechem.OEAnnotation_CreateCopy(self)


    def GetTitle(self) -> "char const *":
        """GetTitle(OEAnnotation self) -> char const *"""
        return _oechem.OEAnnotation_GetTitle(self)


    def SetTitle(self, arg2: 'char const *') -> "void":
        """SetTitle(OEAnnotation self, char const * arg2)"""
        return _oechem.OEAnnotation_SetTitle(self, arg2)


    def GetType(self) -> "unsigned int":
        """GetType(OEAnnotation self) -> unsigned int"""
        return _oechem.OEAnnotation_GetType(self)


    def SetType(self, type: 'unsigned int') -> "void":
        """SetType(OEAnnotation self, unsigned int type)"""
        return _oechem.OEAnnotation_SetType(self, type)


    def GetColor(self) -> "OESystem::OEColor":
        """GetColor(OEAnnotation self) -> OEColor"""
        return _oechem.OEAnnotation_GetColor(self)


    def SetColor(self, arg2: 'OEColor') -> "OESystem::OEAnnotation &":
        """SetColor(OEAnnotation self, OEColor arg2) -> OEAnnotation"""
        return _oechem.OEAnnotation_SetColor(self, arg2)


    def GetRenderHint(self) -> "unsigned int":
        """GetRenderHint(OEAnnotation self) -> unsigned int"""
        return _oechem.OEAnnotation_GetRenderHint(self)


    def SetRenderHint(self, hint: 'unsigned int') -> "OESystem::OEAnnotation &":
        """SetRenderHint(OEAnnotation self, unsigned int hint) -> OEAnnotation"""
        return _oechem.OEAnnotation_SetRenderHint(self, hint)


    def AddChild(self, child: 'OEAnnotation') -> "void":
        """AddChild(OEAnnotation self, OEAnnotation child)"""
        return _oechem.OEAnnotation_AddChild(self, child)


    def GetChildren(self) -> "OESystem::OEIterBase< OESystem::OEAnnotation > *":
        """GetChildren(OEAnnotation self) -> OESystem::OEIterBase< OESystem::OEAnnotation > *"""
        return _oechem.OEAnnotation_GetChildren(self)

OEAnnotation_swigregister = _oechem.OEAnnotation_swigregister
OEAnnotation_swigregister(OEAnnotation)
Container = cvar.Container
Sphere = cvar.Sphere
Ellipsoid = cvar.Ellipsoid
Box = cvar.Box
Cylinder = cvar.Cylinder
Arrow = cvar.Arrow
Line = cvar.Line
Surface = cvar.Surface
Spline = cvar.Spline
SplineSurface = cvar.SplineSurface
Torus = cvar.Torus
Text = cvar.Text
Symbol = cvar.Symbol
Solid = cvar.Solid
Mesh = cvar.Mesh
Points = cvar.Points


def OEAnnotateSphere(title: 'char const *', center: 'float *', radius: 'float', hemisphereDirection: 'float *'=None) -> "OESystem::OEAnnotation":
    """
    OEAnnotateSphere(char const * title, float * center, float radius, float * hemisphereDirection=None) -> OEAnnotation
    OEAnnotateSphere(char const * title, float * center, float radius) -> OEAnnotation
    """
    return _oechem.OEAnnotateSphere(title, center, radius, hemisphereDirection)

def OEAnnotateEllipsoid(title: 'char const *', center: 'float *', a: 'float', b: 'float', c: 'float', dir1: 'float *', dir2: 'float *', dir3: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateEllipsoid(char const * title, float * center, float a, float b, float c, float * dir1, float * dir2, float * dir3) -> OEAnnotation"""
    return _oechem.OEAnnotateEllipsoid(title, center, a, b, c, dir1, dir2, dir3)

def OEAnnotateBox(title: 'char const *', center: 'float *', extents: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateBox(char const * title, float * center, float * extents) -> OEAnnotation"""
    return _oechem.OEAnnotateBox(title, center, extents)

def OEAnnotateCylinder(title: 'char const *', A: 'float *', B: 'float *', r1: 'float', r2: 'float') -> "OESystem::OEAnnotation":
    """OEAnnotateCylinder(char const * title, float * A, float * B, float r1, float r2) -> OEAnnotation"""
    return _oechem.OEAnnotateCylinder(title, A, B, r1, r2)

def OEAnnotateArrow(title: 'char const *', A: 'float *', B: 'float *', percentCylinder: 'float', r1: 'float', r2: 'float', r3: 'float') -> "OESystem::OEAnnotation":
    """OEAnnotateArrow(char const * title, float * A, float * B, float percentCylinder, float r1, float r2, float r3) -> OEAnnotation"""
    return _oechem.OEAnnotateArrow(title, A, B, percentCylinder, r1, r2, r3)

def OEAnnotateLine(title: 'char const *', A: 'float *', B: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateLine(char const * title, float * A, float * B) -> OEAnnotation"""
    return _oechem.OEAnnotateLine(title, A, B)

def OEAnnotateSpline(title: 'char const *', coords: 'float *', numPoints: 'unsigned int', splineResolution: 'unsigned int') -> "OESystem::OEAnnotation":
    """OEAnnotateSpline(char const * title, float * coords, unsigned int numPoints, unsigned int splineResolution) -> OEAnnotation"""
    return _oechem.OEAnnotateSpline(title, coords, numPoints, splineResolution)

def OEAnnotateTorus(title: 'char const *', A: 'float *', r1: 'float', r2: 'float', direction: 'float *') -> "OESystem::OEAnnotation":
    """OEAnnotateTorus(char const * title, float * A, float r1, float r2, float * direction) -> OEAnnotation"""
    return _oechem.OEAnnotateTorus(title, A, r1, r2, direction)

def OEAnnotateText(title: 'char const *', A: 'float *', text: 'char const *') -> "OESystem::OEAnnotation":
    """OEAnnotateText(char const * title, float * A, char const * text) -> OEAnnotation"""
    return _oechem.OEAnnotateText(title, A, text)

def OEAnnotateSymbol(title: 'char const *', A: 'float *', symbol: 'char const *') -> "OESystem::OEAnnotation":
    """OEAnnotateSymbol(char const * title, float * A, char const * symbol) -> OEAnnotation"""
    return _oechem.OEAnnotateSymbol(title, A, symbol)

def OEAnnotateSplineSurface(title: 'char const *', coords: 'float *', numPoints: 'unsigned int', splineResolution: 'unsigned int', segmentResolution: 'int', crossResolution: 'int', width: 'float', thickness: 'float', splineType: 'int', style: 'int') -> "OESystem::OEAnnotation":
    """OEAnnotateSplineSurface(char const * title, float * coords, unsigned int numPoints, unsigned int splineResolution, int segmentResolution, int crossResolution, float width, float thickness, int splineType, int style) -> OEAnnotation"""
    return _oechem.OEAnnotateSplineSurface(title, coords, numPoints, splineResolution, segmentResolution, crossResolution, width, thickness, splineType, style)

def OEInitAnnotationHandlers(hand: 'OEBinaryIOHandlerBase') -> "void":
    """OEInitAnnotationHandlers(OEBinaryIOHandlerBase hand)"""
    return _oechem.OEInitAnnotationHandlers(hand)
class OEAnnotationIter(object):
    """Proxy of C++ OESystem::OEIter<(OESystem::OEAnnotation)> 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<(OESystem::OEAnnotation)> self) -> OEAnnotationIter
        __init__(OESystem::OEIter<(OESystem::OEAnnotation)> self, OEAnnotationIter rhs) -> OEAnnotationIter
        __init__(OESystem::OEIter<(OESystem::OEAnnotation)> self, OESystem::OEIterBase< OESystem::OEAnnotation > * rhs) -> OEAnnotationIter
        __init__(OESystem::OEIter<(OESystem::OEAnnotation)> self, OESystem::OEIterBase< OESystem::OEIter< OESystem::OEAnnotation >::NonConstA > * rhs) -> OEAnnotationIter
        """
        this = _oechem.new_OEAnnotationIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEAnnotationIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OESystem::OEAnnotation > *":
        """Copy(OEAnnotationIter self) -> OESystem::OEIterBase< OESystem::OEAnnotation > *"""
        return _oechem.OEAnnotationIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEAnnotationIter self, OESystem::OEIterBase< OESystem::OEAnnotation > * ib)
        Push(OEAnnotationIter self, OEAnnotationIter iter)
        """
        return _oechem.OEAnnotationIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OESystem::OEAnnotation,OESystem::OEAnnotation > const &') -> "void":
        """Sort(OEAnnotationIter self, OESystem::OEBinaryPredicate< OESystem::OEAnnotation,OESystem::OEAnnotation > const & sort_criterion)"""
        return _oechem.OEAnnotationIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """ToFirst(OEAnnotationIter self) -> OEAnnotationIter"""
        return _oechem.OEAnnotationIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """ToLast(OEAnnotationIter self) -> OEAnnotationIter"""
        return _oechem.OEAnnotationIter_ToLast(self)


    def __ref__(self) -> "OESystem::OEAnnotation &":
        """__ref__(OEAnnotationIter self) -> OEAnnotation"""
        return _oechem.OEAnnotationIter___ref__(self)


    def IsValid(self):
      return _oechem.OEAnnotationIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEAnnotationIter self) -> PyObject *"""
        return _oechem.OEAnnotationIter_next(self)


    def Target(self) -> "OESystem::OEAnnotation &":
        """Target(OEAnnotationIter self) -> OEAnnotation"""
        return _oechem.OEAnnotationIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """
        Next(OEAnnotationIter self) -> OEAnnotationIter
        Next(OEAnnotationIter self, int i) -> OEAnnotationIter
        """
        return _oechem.OEAnnotationIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OESystem::OEAnnotation > &":
        """
        Prev(OEAnnotationIter self) -> OEAnnotationIter
        Prev(OEAnnotationIter self, int i) -> OEAnnotationIter
        """
        return _oechem.OEAnnotationIter_Prev(self, *args)

OEAnnotationIter_swigregister = _oechem.OEAnnotationIter_swigregister
OEAnnotationIter_swigregister(OEAnnotationIter)



# Fix reference counting bug for OEAnnotation
def OEAnnotation_SetColor(self,*a):
    self._SetColor(*a)
    return self

def OEAnnotation_SetRenderHint(self,*a):
    self._SetRenderHint(*a)
    return self

def OEAnnotation_AddChild(self,*a):
    self._AddChild(*a)
    return self

OEAnnotation._SetColor      = OEAnnotation.SetColor
OEAnnotation._SetRenderHint = OEAnnotation.SetRenderHint
OEAnnotation._AddChild      = OEAnnotation.AddChild
OEAnnotation.SetColor       = OEAnnotation_SetColor
OEAnnotation.SetRenderHint  = OEAnnotation_SetRenderHint
OEAnnotation.AddChild       = OEAnnotation_AddChild


# Fix up the setslice and delslice for the vector classes
def __vector__setslice__(self, lo, hi, value):
    """__setslice__(self, int i, int j, Vector v)"""
    for i in range(lo, hi):
        self[i] = value[lo-i]

def __vector__delslice__(self, lo, hi):
    """__delslice__(self, int i, int j)"""
    if hi > len(self):
       hi = len(self)
    for i in range(lo, hi):
        del self[lo]

def __vector__getitem__(self, ob):
    if type(ob) == type(slice(1,1)):
        if ob.step and ob.step != 1:
           raise IndexError("OpenEye vector classes do not support slices with step options")
        return self.__getslice__(ob.start, ob.stop)
    else:
        return self.__orig_getitem__(ob)

def __vector__setitem__(self, ob, v):
    if type(ob) == type(slice(1,1)):
        if ob.step and ob.step != 1:
           raise IndexError("OpenEye vector classes do not support slices with step options")
        return self.__setslice__(ob.start, ob.stop, v)
    else:
        return self.__orig_setitem__(ob, v)

def __vector__delitem__(self, ob):
    if type(ob) == type(slice(1,1)):
        if ob.step and ob.step != 1:
           raise IndexError("OpenEye vector classes do not support slices with step options")
        return self.__delslice__(ob.start, ob.stop)
    else:
        return self.__orig_delitem__(ob)

for cls in (OEIntVector, OEUIntVector, OELongVector, OECharVector,
            OEUCharVector, OEFloatVector, OEDoubleVector,
            OEAtomVector, OEBondVector, OEConfVector):
    cls.__orig_getitem__ = cls.__getitem__
    cls.__getitem__ = __vector__getitem__
    cls.__orig_setitem__ = cls.__setitem__
    cls.__setitem__ = __vector__setitem__
    cls.__orig_delitem__ = cls.__delitem__
    cls.__delitem__ = __vector__delitem__

del __vector__setslice__
del __vector__delslice__
del cls

def OECoordF(x,y,z):
    f = OEFloatArray(3)
    f[0] = x
    f[1] = y
    f[2] = z
    return f

def OECoord(x,y,z):
    f = OEDoubleArray(3)
    f[0] = x
    f[1] = y
    f[2] = z
    return f


def OEToArray(*a):
    f = OEDoubleArray(len(a))
    for i,x in enumerate(a):
        f[i] = x
    return f

def OEToArrayF(*a):
    f = OEFloatArray(len(a))
    for i,x in enumerate(a):
        f[i] = x
    return f

def OEToArrayI(*a):
    f = OEIntArray(len(a))
    for i,x in enumerate(a):
        f[i] = x
    return f


def OEHasExplicitHydrogenExpression(arg1: 'OEQMolBase') -> "bool":
    """OEHasExplicitHydrogenExpression(OEQMolBase arg1) -> bool"""
    return _oechem.OEHasExplicitHydrogenExpression(arg1)

def OEHasImplicitHydrogenExpression(arg1: 'OEQMolBase') -> "bool":
    """OEHasImplicitHydrogenExpression(OEQMolBase arg1) -> bool"""
    return _oechem.OEHasImplicitHydrogenExpression(arg1)

def OEDisassembleExpressions(arg1: 'OEQMolBase') -> "bool":
    """OEDisassembleExpressions(OEQMolBase arg1) -> bool"""
    return _oechem.OEDisassembleExpressions(arg1)
class OEExprBase(object):
    """Proxy of C++ OEChem::OEExprBase class."""

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

    def __init__(self, *args, **kwargs):
        raise AttributeError("No constructor defined - class is abstract")
    __repr__ = _swig_repr
    __swig_destroy__ = _oechem.delete_OEExprBase
    __del__ = lambda self: None

    def IsEquivalent(self, *args) -> "OEChem::OEFuzzy const &":
        """
        IsEquivalent(OEExprBase self, OEAtomBase arg2) -> OEFuzzy
        IsEquivalent(OEExprBase self, OEBondBase arg2) -> OEFuzzy
        """
        return _oechem.OEExprBase_IsEquivalent(self, *args)


    def CreateCopy(self) -> "OEChem::OEExprBase *":
        """CreateCopy(OEExprBase self) -> OEExprBase"""
        return _oechem.OEExprBase_CreateCopy(self)


    def GetType(self) -> "unsigned int":
        """GetType(OEExprBase self) -> unsigned int"""
        return _oechem.OEExprBase_GetType(self)

OEExprBase_swigregister = _oechem.OEExprBase_swigregister
OEExprBase_swigregister(OEExprBase)

class OEFuzzy(object):
    """Proxy of C++ OEChem::OEFuzzy 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__(OEChem::OEFuzzy self) -> OEFuzzy
        __init__(OEChem::OEFuzzy self, unsigned int const v) -> OEFuzzy
        """
        this = _oechem.new_OEFuzzy(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def IsValid(self):
      return _oechem.OEFuzzy___nonzero__(self)



    def __eq__(self, arg2: 'OEFuzzy') -> "bool":
        """__eq__(OEFuzzy self, OEFuzzy arg2) -> bool"""
        return _oechem.OEFuzzy___eq__(self, arg2)


    def __ne__(self, arg2: 'OEFuzzy') -> "bool":
        """__ne__(OEFuzzy self, OEFuzzy arg2) -> bool"""
        return _oechem.OEFuzzy___ne__(self, arg2)


    def __str__(self) -> "std::string":
        """__str__(OEFuzzy self) -> std::string"""
        return _oechem.OEFuzzy___str__(self)

    __swig_destroy__ = _oechem.delete_OEFuzzy
    __del__ = lambda self: None
OEFuzzy_swigregister = _oechem.OEFuzzy_swigregister
OEFuzzy_swigregister(OEFuzzy)


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(OEFragmentConnection 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 *
    """
    return _oechem.GetSWIG_NewPointerObj(*args)

def OEGeom2DMagnitude(*args) -> "double":
    """
    OEGeom2DMagnitude(float * x) -> double
    OEGeom2DMagnitude(double * x) -> double
    """
    return _oechem.OEGeom2DMagnitude(*args)

def OEGeom2DCopy(*args) -> "void":
    """
    OEGeom2DCopy(float * x, float const * p)
    OEGeom2DCopy(double * x, double const * p)
    """
    return _oechem.OEGeom2DCopy(*args)

def OEGeom2DAdd(*args) -> "void":
    """
    OEGeom2DAdd(float * x, float const * p)
    OEGeom2DAdd(float * x, float const * p, float const * q)
    OEGeom2DAdd(double * x, double const * p)
    OEGeom2DAdd(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom2DAdd(*args)

def OEGeom2DSubtract(*args) -> "void":
    """
    OEGeom2DSubtract(float * x, float const * p)
    OEGeom2DSubtract(float * x, float const * p, float const * q)
    OEGeom2DSubtract(double * x, double const * p)
    OEGeom2DSubtract(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom2DSubtract(*args)

def OEGeom2DScale(*args) -> "void":
    """
    OEGeom2DScale(float * x, float const p)
    OEGeom2DScale(float * x, float const p, float const * q)
    OEGeom2DScale(double * x, double const p)
    OEGeom2DScale(double * x, double const p, double const * q)
    """
    return _oechem.OEGeom2DScale(*args)

def OEGeom2DDotProd(*args) -> "double":
    """
    OEGeom2DDotProd(float const * p, float const * q) -> double
    OEGeom2DDotProd(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom2DDotProd(*args)

def OEGeom2DDistance(*args) -> "double":
    """
    OEGeom2DDistance(float const * p, float const * q) -> double
    OEGeom2DDistance(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom2DDistance(*args)

def OEGeom2DDistance2(*args) -> "double":
    """
    OEGeom2DDistance2(float const * p, float const * q) -> double
    OEGeom2DDistance2(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom2DDistance2(*args)

def OEGeom2DAngle(*args) -> "double":
    """
    OEGeom2DAngle(float const * p, float const * q, float const * r) -> double
    OEGeom2DAngle(double const * p, double const * q, double const * r) -> double
    """
    return _oechem.OEGeom2DAngle(*args)

def OEGeom2DMidpoint(*args) -> "void":
    """
    OEGeom2DMidpoint(float * x, float const * p, float const * q)
    OEGeom2DMidpoint(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom2DMidpoint(*args)

def OEGeom2DNormalize(*args) -> "void":
    """
    OEGeom2DNormalize(float * x)
    OEGeom2DNormalize(double * x)
    """
    return _oechem.OEGeom2DNormalize(*args)

def OEGeom2DSetLength(*args) -> "void":
    """
    OEGeom2DSetLength(float * x, float len)
    OEGeom2DSetLength(double * x, double len)
    """
    return _oechem.OEGeom2DSetLength(*args)

def OEGeom2DTranslate(*args) -> "void":
    """
    OEGeom2DTranslate(float * xyz, float const * t, unsigned int ncoord)
    OEGeom2DTranslate(double * xyz, double const * t, unsigned int ncoord)
    """
    return _oechem.OEGeom2DTranslate(*args)

def OEGeom2DRotate(*args) -> "void":
    """
    OEGeom2DRotate(float * xyz, float const * m, unsigned int ncoord)
    OEGeom2DRotate(double * xyz, double const * m, unsigned int ncoord)
    """
    return _oechem.OEGeom2DRotate(*args)

def OEGeom3DMagnitude(*args) -> "double":
    """
    OEGeom3DMagnitude(float * x) -> double
    OEGeom3DMagnitude(double * x) -> double
    """
    return _oechem.OEGeom3DMagnitude(*args)

def OEGeom3DCopy(*args) -> "void":
    """
    OEGeom3DCopy(float * x, float const * p)
    OEGeom3DCopy(double * x, double const * p)
    """
    return _oechem.OEGeom3DCopy(*args)

def OEGeom3DAdd(*args) -> "void":
    """
    OEGeom3DAdd(float * x, float const * p)
    OEGeom3DAdd(double * x, double const * p)
    OEGeom3DAdd(float * x, float const * p, float const * q)
    OEGeom3DAdd(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom3DAdd(*args)

def OEGeom3DSubtract(*args) -> "void":
    """
    OEGeom3DSubtract(float * x, float const * p)
    OEGeom3DSubtract(double * x, double const * p)
    OEGeom3DSubtract(float * x, float const * p, float const * q)
    OEGeom3DSubtract(double * x, double const * p, double const * q)
    """
    return _oechem.OEGeom3DSubtract(*args)

def OEGeom3DScale(*args) -> "void":
    """
    OEGeom3DScale(float * x, float const p)
    OEGeom3DScale(float * x, float const p, float const * q)
    OEGeom3DScale(double * x, double const p)
    OEGeom3DScale(double * x, double const p, double const * q)
    """
    return _oechem.OEGeom3DScale(*args)

def OEGeom3DDotProd(*args) -> "double":
    """
    OEGeom3DDotProd(float const * p, float const * q) -> double
    OEGeom3DDotProd(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DDotProd(*args)

def OEGeom3DCrossProd(*args) -> "void":
    """
    OEGeom3DCrossProd(float * x, float const * p, float const * q)
    OEGeom3DCrossProd(double * x, double const * p, double const * q)
    OEGeom3DCrossProd(float * x, float const * p, float const * q, float const * r)
    OEGeom3DCrossProd(double * x, double const * p, double const * q, double const * r)
    """
    return _oechem.OEGeom3DCrossProd(*args)

def OEGeom3DDistance(*args) -> "double":
    """
    OEGeom3DDistance(float const * p, float const * q) -> double
    OEGeom3DDistance(float const * p, double const * q) -> double
    OEGeom3DDistance(double const * p, float const * q) -> double
    OEGeom3DDistance(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DDistance(*args)

def OEGeom3DDistance2(*args) -> "double":
    """
    OEGeom3DDistance2(float const * p, float const * q) -> double
    OEGeom3DDistance2(float const * p, double const * q) -> double
    OEGeom3DDistance2(double const * p, float const * q) -> double
    OEGeom3DDistance2(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DDistance2(*args)

def OEGeom3DAngle(*args) -> "double":
    """
    OEGeom3DAngle(float const * p, float const * q, float const * r) -> double
    OEGeom3DAngle(double const * p, double const * q, double const * r) -> double
    OEGeom3DAngle(float const * p, float const * q) -> double
    OEGeom3DAngle(double const * p, double const * q) -> double
    """
    return _oechem.OEGeom3DAngle(*args)

def OEGeom3DTorsion(*args) -> "double":
    """
    OEGeom3DTorsion(float const * p, float const * q, float const * r, float const * s) -> double
    OEGeom3DTorsion(double const * p, double const * q, double const * r, double const * s) -> double
    """
    return _oechem.OEGeom3DTorsion(*args)

def OEGeom3DAbsTorsion(*args) -> "double":
    """
    OEGeom3DAbsTorsion(float const * p, float const * q, float const * r, float const * s) -> double
    OEGeom3DAbsTorsion(double const * p, double const * q, double const * r, double const * s) -> double
    """
    return _oechem.OEGeom3DAbsTorsion(*args)

def OEGeom3DVolume(*args) -> "double":
    """
    OEGeom3DVolume(float const * p, float const * q, float const * r, float const * s) -> double
    OEGeom3DVolume(double const * p, double const * q, double const * r, double const * s) -> double
    """
    return _oechem.OEGeom3DVolume(*args)

def OEGeom3DNormalize(*args) -> "void":
    """
    OEGeom3DNormalize(float * x)
    OEGeom3DNormalize(double * x)
    """
    return _oechem.OEGeom3DNormalize(*args)

def OEGeom3DSetLength(*args) -> "void":
    """
    OEGeom3DSetLength(float * x, float len)
    OEGeom3DSetLength(double * x, double len)
    """
    return _oechem.OEGeom3DSetLength(*args)

def OEGeom3DTranslate(*args) -> "void":
    """
    OEGeom3DTranslate(float * xyz, double const * t, unsigned int ncoord)
    OEGeom3DTranslate(float * xyz, double const * t, unsigned int * idx, unsigned int ncoord)
    OEGeom3DTranslate(double * xyz, double const * t, unsigned int ncoord)
    OEGeom3DTranslate(double * xyz, double const * t, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DTranslate(*args)

def OEGeom3DRotate(*args) -> "void":
    """
    OEGeom3DRotate(float * xyz, double const * m, unsigned int ncoord)
    OEGeom3DRotate(float * xyz, double const * m, unsigned int * idx, unsigned int ncoord)
    OEGeom3DRotate(double * xyz, double const * m, unsigned int ncoord)
    OEGeom3DRotate(double * xyz, double const * m, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DRotate(*args)

def OEGeom3DReflect(*args) -> "void":
    """
    OEGeom3DReflect(float * xyz, unsigned int axis_to_reflect_around, unsigned int ncoord)
    OEGeom3DReflect(double * xyz, unsigned int axis_to_reflect_around, unsigned int ncoord)
    """
    return _oechem.OEGeom3DReflect(*args)

def OEGeom3DRotVectorToTransform(*args) -> "bool":
    """
    OEGeom3DRotVectorToTransform(double * m, double * tran, float const * p1, float const * p2, float const theta) -> bool
    OEGeom3DRotVectorToTransform(double * m, double * tran, double const * p1, double const * p2, double const theta) -> bool
    """
    return _oechem.OEGeom3DRotVectorToTransform(*args)

def OEGeom3DEulerRotate(*args) -> "void":
    """
    OEGeom3DEulerRotate(float * xyz, double const * angles, unsigned int ncoord)
    OEGeom3DEulerRotate(double * xyz, double const * angles, unsigned int ncoord)
    """
    return _oechem.OEGeom3DEulerRotate(*args)

def OEGeom3DAngleCoord(*args) -> "void":
    """
    OEGeom3DAngleCoord(float * dst, float const * center, float const * r1, float ang, float len)
    OEGeom3DAngleCoord(float * dst, float const * center, float const * r1, float const * n, float ang, float len)
    OEGeom3DAngleCoord(double * dst, double const * center, double const * r1, double ang, double len)
    OEGeom3DAngleCoord(double * dst, double const * center, double const * r1, double const * n, double ang, double len)
    """
    return _oechem.OEGeom3DAngleCoord(*args)

def OEGeom3DPlanarCoord(*args) -> "void":
    """
    OEGeom3DPlanarCoord(float * dst, float const * center, float const * r1, float const * r2, float len)
    OEGeom3DPlanarCoord(double * dst, double const * center, double const * r1, double const * r2, double len)
    """
    return _oechem.OEGeom3DPlanarCoord(*args)

def OEGeom3DTetraCoord(*args) -> "void":
    """
    OEGeom3DTetraCoord(float * dst, float const * center, float const * r1, float const * r2, float len)
    OEGeom3DTetraCoord(float * dst, float const * center, float const * r1, float const * r2, float const * r3, float len)
    OEGeom3DTetraCoord(double * dst, double const * center, double const * r1, double const * r2, double len)
    OEGeom3DTetraCoord(double * dst, double const * center, double const * r1, double const * r2, double const * r3, double len)
    """
    return _oechem.OEGeom3DTetraCoord(*args)

def OEGeom3DEulerToRotMatrix(*args) -> "void":
    """
    OEGeom3DEulerToRotMatrix(double * RMat, double const phi, double const theta, double const psi)
    OEGeom3DEulerToRotMatrix(double * RMat, double const * angles)
    """
    return _oechem.OEGeom3DEulerToRotMatrix(*args)

def OEGeomQuaternionMultiply(Product: 'double *', qLhs: 'double const *', qRhs: 'double const *') -> "void":
    """OEGeomQuaternionMultiply(double * Product, double const * qLhs, double const * qRhs)"""
    return _oechem.OEGeomQuaternionMultiply(Product, qLhs, qRhs)

def OEGeomNormalizeQuaternion(quaternion: 'double *') -> "void":
    """OEGeomNormalizeQuaternion(double * quaternion)"""
    return _oechem.OEGeomNormalizeQuaternion(quaternion)

def OEGeom3DMakeQuaternion(quat: 'double *', vec: 'double const *', angle: 'double const') -> "void":
    """OEGeom3DMakeQuaternion(double * quat, double const * vec, double const angle)"""
    return _oechem.OEGeom3DMakeQuaternion(quat, vec, angle)

def OEGeom3DQuaternionInvert(iquat: 'double *', quat: 'double const *') -> "void":
    """OEGeom3DQuaternionInvert(double * iquat, double const * quat)"""
    return _oechem.OEGeom3DQuaternionInvert(iquat, quat)

def OEGeom3DQuaternionToRotMatrix(RMat: 'double *', quat: 'double const *') -> "void":
    """OEGeom3DQuaternionToRotMatrix(double * RMat, double const * quat)"""
    return _oechem.OEGeom3DQuaternionToRotMatrix(RMat, quat)

def OEGeom3DEulerToQuaternion(quat: 'double *', angles: 'double const *') -> "void":
    """OEGeom3DEulerToQuaternion(double * quat, double const * angles)"""
    return _oechem.OEGeom3DEulerToQuaternion(quat, angles)

def OEGeom3DMatrixIdentity(rmat: 'double *') -> "void":
    """OEGeom3DMatrixIdentity(double * rmat)"""
    return _oechem.OEGeom3DMatrixIdentity(rmat)

def OEGeom3DMatrixMultiply(*args) -> "void":
    """
    OEGeom3DMatrixMultiply(double * accumulator, double const * add)
    OEGeom3DMatrixMultiply(double * Product, double const * init, double const * add)
    """
    return _oechem.OEGeom3DMatrixMultiply(*args)

def OEGeom3DMatrixInvert(mi: 'double *', m: 'double const *') -> "bool":
    """OEGeom3DMatrixInvert(double * mi, double const * m) -> bool"""
    return _oechem.OEGeom3DMatrixInvert(mi, m)

def OEGeom3DMatrixTranspose(mat: 'double *') -> "void":
    """OEGeom3DMatrixTranspose(double * mat)"""
    return _oechem.OEGeom3DMatrixTranspose(mat)

def OEGeom3DQuaternionIdentity(quat: 'double *') -> "void":
    """OEGeom3DQuaternionIdentity(double * quat)"""
    return _oechem.OEGeom3DQuaternionIdentity(quat)

def OEGeom3DQuaternionRotate(*args) -> "void":
    """
    OEGeom3DQuaternionRotate(float * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DQuaternionRotate(float * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    OEGeom3DQuaternionRotate(double * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DQuaternionRotate(double * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DQuaternionRotate(*args)

def OEGeom3DUnitQuaternionRotate(*args) -> "void":
    """
    OEGeom3DUnitQuaternionRotate(float * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DUnitQuaternionRotate(float * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    OEGeom3DUnitQuaternionRotate(double * xyz, double const * quat, unsigned int ncoord)
    OEGeom3DUnitQuaternionRotate(double * xyz, double const * quat, unsigned int * idx, unsigned int ncoord)
    """
    return _oechem.OEGeom3DUnitQuaternionRotate(*args)

def OEGeomDotProd(*args) -> "double":
    """
    OEGeomDotProd(float const * p, float const * q, unsigned int arg3) -> double
    OEGeomDotProd(double const * p, double const * q, unsigned int arg3) -> double
    """
    return _oechem.OEGeomDotProd(*args)

def OEGeom3DGetCenterAndExtents(*args) -> "void":
    """
    OEGeom3DGetCenterAndExtents(float const * xyz, unsigned int ncoord, float * center, float * extents)
    OEGeom3DGetCenterAndExtents(double const * xyz, unsigned int ncoord, double * center, double * extents)
    """
    return _oechem.OEGeom3DGetCenterAndExtents(*args)

def OEGeom3DGetCenterOfMass(*args) -> "void":
    """
    OEGeom3DGetCenterOfMass(float const * xyz, unsigned int ncoord, float * com, float * weights)
    OEGeom3DGetCenterOfMass(double const * xyz, unsigned int ncoord, double * com, double * weights)
    OEGeom3DGetCenterOfMass(float const * xyz, unsigned int ncoord, float * com)
    OEGeom3DGetCenterOfMass(double const * xyz, unsigned int ncoord, double * com)
    """
    return _oechem.OEGeom3DGetCenterOfMass(*args)


def IsPythonCommandlineInterpreter():
    import sys
    if sys.flags.interactive:
        return True

    import os
    if "PYTHONINSPECT" in os.environ:
        return True

    import __main__
    if (not hasattr(__main__, "__file__") and
        sys.argv and sys.argv[0] != "-c"):
        return True

    return False

def TextModeStdin():
    import os
    import msvcrt
    STDIN_FILENO = 0
    msvcrt.setmode(STDIN_FILENO, os.O_TEXT)

import sys
if sys.platform.startswith("win"):
    if IsPythonCommandlineInterpreter():
        TextModeStdin()

del sys

class OESimilarByRMSD(OEBinaryConfPred):
    """Proxy of C++ OEChem::OESimilarByRMSD 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__(OEChem::OESimilarByRMSD self, double const argRmsd) -> OESimilarByRMSD
        __init__(OEChem::OESimilarByRMSD self, OESimilarByRMSD argPredicate) -> OESimilarByRMSD
        """
        this = _oechem.new_OESimilarByRMSD(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OESimilarByRMSD
    __del__ = lambda self: None

    def __call__(self, argConf1: 'OEConfBase', argConf2: 'OEConfBase') -> "bool":
        """__call__(OESimilarByRMSD self, OEConfBase argConf1, OEConfBase argConf2) -> bool"""
        return _oechem.OESimilarByRMSD___call__(self, argConf1, argConf2)


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


OESimilarByRMSD_swigregister = _oechem.OESimilarByRMSD_swigregister
OESimilarByRMSD_swigregister(OESimilarByRMSD)
FzFalse = cvar.FzFalse
FzTrue = cvar.FzTrue
FzMaybe = cvar.FzMaybe


def OEGenerate2DCoordinates(mol: 'OEMolBase') -> "bool":
    """OEGenerate2DCoordinates(OEMolBase mol) -> bool"""
    return _oechem.OEGenerate2DCoordinates(mol)
class OEExtractRingTemplateOptions(object):
    """Proxy of C++ OEChem::OEExtractRingTemplateOptions 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__(OEChem::OEExtractRingTemplateOptions self) -> OEExtractRingTemplateOptions
        __init__(OEChem::OEExtractRingTemplateOptions self, OEExtractRingTemplateOptions rhs) -> OEExtractRingTemplateOptions
        """
        this = _oechem.new_OEExtractRingTemplateOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OEExtractRingTemplateOptions
    __del__ = lambda self: None

    def SetRetainBondStereo(self, arg2: 'bool') -> "void":
        """SetRetainBondStereo(OEExtractRingTemplateOptions self, bool arg2)"""
        return _oechem.OEExtractRingTemplateOptions_SetRetainBondStereo(self, arg2)


    def GetRetainBondStereo(self) -> "bool":
        """GetRetainBondStereo(OEExtractRingTemplateOptions self) -> bool"""
        return _oechem.OEExtractRingTemplateOptions_GetRetainBondStereo(self)


    def SetRetainExistingTemplates(self, arg2: 'bool') -> "void":
        """SetRetainExistingTemplates(OEExtractRingTemplateOptions self, bool arg2)"""
        return _oechem.OEExtractRingTemplateOptions_SetRetainExistingTemplates(self, arg2)


    def GetRetainExistingTemplates(self) -> "bool":
        """GetRetainExistingTemplates(OEExtractRingTemplateOptions self) -> bool"""
        return _oechem.OEExtractRingTemplateOptions_GetRetainExistingTemplates(self)

OEExtractRingTemplateOptions_swigregister = _oechem.OEExtractRingTemplateOptions_swigregister
OEExtractRingTemplateOptions_swigregister(OEExtractRingTemplateOptions)


def OEExtractRingTemplates(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEExtractRingTemplates(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEExtractRingTemplates(OEMolBase mol, OEExtractRingTemplateOptions opts) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oechem.OEExtractRingTemplates(*args)
class OE2DRingDictionaryCreatorOptions(object):
    """Proxy of C++ OEChem::OE2DRingDictionaryCreatorOptions 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__(OEChem::OE2DRingDictionaryCreatorOptions self) -> OE2DRingDictionaryCreatorOptions
        __init__(OEChem::OE2DRingDictionaryCreatorOptions self, OE2DRingDictionaryCreatorOptions rhs) -> OE2DRingDictionaryCreatorOptions
        """
        this = _oechem.new_OE2DRingDictionaryCreatorOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OE2DRingDictionaryCreatorOptions
    __del__ = lambda self: None

    def SetRetainExistingBuiltInTemplates(self, arg2: 'bool') -> "void":
        """SetRetainExistingBuiltInTemplates(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetRetainExistingBuiltInTemplates(self, arg2)


    def GetRetainExistingBuiltInTemplates(self) -> "bool":
        """GetRetainExistingBuiltInTemplates(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetRetainExistingBuiltInTemplates(self)


    def SetRetainExistingTemplates(self, arg2: 'bool') -> "void":
        """SetRetainExistingTemplates(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetRetainExistingTemplates(self, arg2)


    def GetRetainExistingTemplates(self) -> "bool":
        """GetRetainExistingTemplates(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetRetainExistingTemplates(self)


    def SetAddCarbonSkeleton(self, arg2: 'bool') -> "void":
        """SetAddCarbonSkeleton(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetAddCarbonSkeleton(self, arg2)


    def GetAddCarbonSkeleton(self) -> "bool":
        """GetAddCarbonSkeleton(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetAddCarbonSkeleton(self)


    def SetAddCarbonSkeletonWithBondStereo(self, arg2: 'bool') -> "void":
        """SetAddCarbonSkeletonWithBondStereo(OE2DRingDictionaryCreatorOptions self, bool arg2)"""
        return _oechem.OE2DRingDictionaryCreatorOptions_SetAddCarbonSkeletonWithBondStereo(self, arg2)


    def GetAddCarbonSkeletonWithBondStereo(self) -> "bool":
        """GetAddCarbonSkeletonWithBondStereo(OE2DRingDictionaryCreatorOptions self) -> bool"""
        return _oechem.OE2DRingDictionaryCreatorOptions_GetAddCarbonSkeletonWithBondStereo(self)

OE2DRingDictionaryCreatorOptions_swigregister = _oechem.OE2DRingDictionaryCreatorOptions_swigregister
OE2DRingDictionaryCreatorOptions_swigregister(OE2DRingDictionaryCreatorOptions)

class OE2DRingDictionary(object):
    """Proxy of C++ OEChem::OE2DRingDictionary 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__(OEChem::OE2DRingDictionary self) -> OE2DRingDictionary
        __init__(OEChem::OE2DRingDictionary self, OE2DRingDictionaryCreatorOptions opts) -> OE2DRingDictionary
        __init__(OEChem::OE2DRingDictionary self, std::string const & filename) -> OE2DRingDictionary
        __init__(OEChem::OE2DRingDictionary self, oemolistream ims) -> OE2DRingDictionary
        """
        this = _oechem.new_OE2DRingDictionary(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oechem.delete_OE2DRingDictionary
    __del__ = lambda self: None

    def NumRings(self) -> "unsigned int":
        """NumRings(OE2DRingDictionary self) -> unsigned int"""
        return _oechem.OE2DRingDictionary_NumRings(self)


    def AddRings(self, mol: 'OEMolBase') -> "unsigned int":
        """AddRings(OE2DRingDictionary self, OEMolBase mol) -> unsigned int"""
        return _oechem.OE2DRingDictionary_AddRings(self, mol)


    def GetOEChemRelease(self) -> "std::string":
        """GetOEChemRelease(OE2DRingDictionary self) -> std::string"""
        return _oechem.OE2DRingDictionary_GetOEChemRelease(self)


    def GetVersion(self) -> "std::string":
        """GetVersion(OE2DRingDictionary self) -> std::string"""
        return _oechem.OE2DRingDictionary_GetVersion(self)

OE2DRingDictionary_swigregister = _oechem.OE2DRingDictionary_swigregister
OE2DRingDictionary_swigregister(OE2DRingDictionary)


def OEIsValid2DRingDictionary(*args) -> "bool":
    """
    OEIsValid2DRingDictionary(std::string const & filename) -> bool
    OEIsValid2DRingDictionary(oemolistream ifs) -> bool
    """
    return _oechem.OEIsValid2DRingDictionary(*args)

def OEWrite2DRingDictionary(*args) -> "bool":
    """
    OEWrite2DRingDictionary(std::string const & filename, OE2DRingDictionary rtd) -> bool
    OEWrite2DRingDictionary(oeostream os, OE2DRingDictionary rtd) -> bool
    OEWrite2DRingDictionary(oemolostream oms, OE2DRingDictionary rtd) -> bool
    """
    return _oechem.OEWrite2DRingDictionary(*args)

def OEInit2DRingDictionary(*args) -> "bool":
    """
    OEInit2DRingDictionary(std::string const & filename) -> bool
    OEInit2DRingDictionary(oemolistream ims) -> bool
    """
    return _oechem.OEInit2DRingDictionary(*args)

def OEClear2DRingDictionary() -> "void":
    """OEClear2DRingDictionary()"""
    return _oechem.OEClear2DRingDictionary()


