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


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

from sys import version_info as _swig_python_version_info

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

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

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

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

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

    _oemedchem = libs.OEGetModule('_oemedchem1126')
    return _oemedchem

_oemedchem = swig_import_helper()
del swig_import_helper
del _swig_python_version_info

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

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


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


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


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


def _swig_setattr_nondynamic_method(set):
    def set_attr(self, name, value):
        if (name == "thisown"):
            return self.this.own(value)
        if hasattr(self, name) or (name == "this"):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add attributes to %s" % self)
    return set_attr


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



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

def TypeToPyString(type: 'void const *') -> "PyObject *":
    return _oemedchem.TypeToPyString(type)
TypeToPyString = _oemedchem.TypeToPyString
class OEInternalFunctionPointer(object):
    thisown = _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):
        this = _oemedchem.new_OEInternalFunctionPointer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def Add(self, b: 'OEBase', tag: 'unsigned int', data: 'PyObject *') -> "bool":
        return _oemedchem.OEInternalFunctionPointer_Add(self, b, tag, data)
    __swig_destroy__ = _oemedchem.delete_OEInternalFunctionPointer
    __del__ = lambda self: None
OEInternalFunctionPointer_swigregister = _oemedchem.OEInternalFunctionPointer_swigregister
OEInternalFunctionPointer_swigregister(OEInternalFunctionPointer)


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

def __no_op(*args) -> "void":
    return _oemedchem.__no_op(*args)
__no_op = _oemedchem.__no_op
OEMatchedPairContext_Undefined = _oemedchem.OEMatchedPairContext_Undefined
OEMatchedPairContext_AllBonds = _oemedchem.OEMatchedPairContext_AllBonds
OEMatchedPairContext_Bond0 = _oemedchem.OEMatchedPairContext_Bond0
OEMatchedPairContext_Bond1 = _oemedchem.OEMatchedPairContext_Bond1
OEMatchedPairContext_Bond2 = _oemedchem.OEMatchedPairContext_Bond2
OEMatchedPairContext_Bond3 = _oemedchem.OEMatchedPairContext_Bond3

OEMatchedPairContext_DEFAULT = OEMatchedPairContext_Bond1


OEMatchedPairContext_Default = OEMatchedPairContext_DEFAULT

OEMatchedPairProcessor_Undefined = _oemedchem.OEMatchedPairProcessor_Undefined
OEMatchedPairProcessor_HussainRea = _oemedchem.OEMatchedPairProcessor_HussainRea
OEMatchedPairProcessor_BemisMurcko = _oemedchem.OEMatchedPairProcessor_BemisMurcko
OEMatchedPairProcessor_Custom = _oemedchem.OEMatchedPairProcessor_Custom

OEMatchedPairProcessor_DEFAULT = OEMatchedPairProcessor_HussainRea


OEMatchedPairProcessor_Default = OEMatchedPairProcessor_DEFAULT

OEMatchedPairOptions_SingleCuts = _oemedchem.OEMatchedPairOptions_SingleCuts
OEMatchedPairOptions_DoubleCuts = _oemedchem.OEMatchedPairOptions_DoubleCuts
OEMatchedPairOptions_TripleCuts = _oemedchem.OEMatchedPairOptions_TripleCuts
OEMatchedPairOptions_ComboCuts = _oemedchem.OEMatchedPairOptions_ComboCuts
OEMatchedPairOptions_AllCuts = _oemedchem.OEMatchedPairOptions_AllCuts
OEMatchedPairOptions_UniquesOnly = _oemedchem.OEMatchedPairOptions_UniquesOnly
OEMatchedPairOptions_IndexHSites = _oemedchem.OEMatchedPairOptions_IndexHSites
OEMatchedPairOptions_ExportCompression = _oemedchem.OEMatchedPairOptions_ExportCompression
OEMatchedPairOptions_ExportHKeys = _oemedchem.OEMatchedPairOptions_ExportHKeys
OEMatchedPairOptions_IndexHSingleCuts = _oemedchem.OEMatchedPairOptions_IndexHSingleCuts
OEMatchedPairOptions_ValidFragIndexOpts = _oemedchem.OEMatchedPairOptions_ValidFragIndexOpts

OEMatchedPairOptions_ValidIndexOpts = OEMatchedPairOptions_ValidFragIndexOpts|OEMatchedPairOptions_UniquesOnly

OEMatchedPairOptions_ValidAlterOpts = _oemedchem.OEMatchedPairOptions_ValidAlterOpts

OEMatchedPairOptions_ValidOptions = OEMatchedPairOptions_ValidFragIndexOpts|OEMatchedPairOptions_UniquesOnly|OEMatchedPairOptions_ValidAlterOpts

OEMatchedPairOptions_DEFAULT = _oemedchem.OEMatchedPairOptions_DEFAULT

OEMatchedPairOptions_Default = OEMatchedPairOptions_DEFAULT


OEMatchedPairOptions_DefaultFragIndex = OEMatchedPairOptions_AllCuts|OEMatchedPairOptions_IndexHSites

OEMatchedPairIndexStatus_NoError = _oemedchem.OEMatchedPairIndexStatus_NoError
OEMatchedPairIndexStatus_Unspecified = _oemedchem.OEMatchedPairIndexStatus_Unspecified
OEMatchedPairIndexStatus_FragmentationLimitFilter = _oemedchem.OEMatchedPairIndexStatus_FragmentationLimitFilter
OEMatchedPairIndexStatus_HeavyAtomFilter = _oemedchem.OEMatchedPairIndexStatus_HeavyAtomFilter
OEMatchedPairIndexStatus_FragmentRangeFilter = _oemedchem.OEMatchedPairIndexStatus_FragmentRangeFilter
OEMatchedPairIndexStatus_DataFilter = _oemedchem.OEMatchedPairIndexStatus_DataFilter
OEMatchedPairIndexStatus_DuplicateStructure = _oemedchem.OEMatchedPairIndexStatus_DuplicateStructure
OEMatchedPairIndexStatus_DuplicateRecordID = _oemedchem.OEMatchedPairIndexStatus_DuplicateRecordID
OEMatchedPairIndexStatus_NoStructure = _oemedchem.OEMatchedPairIndexStatus_NoStructure
OEMatchedPairIndexStatus_CopyMolError = _oemedchem.OEMatchedPairIndexStatus_CopyMolError
OEMatchedPairIndexStatus_ProcessorError = _oemedchem.OEMatchedPairIndexStatus_ProcessorError
OEMatchedPairIndexStatus_ProcessorFilter = _oemedchem.OEMatchedPairIndexStatus_ProcessorFilter
OEMatchedPairIndexStatus_Deactivated = _oemedchem.OEMatchedPairIndexStatus_Deactivated
OEMatchedPairIndexStatus_NoFragmentationBonds = _oemedchem.OEMatchedPairIndexStatus_NoFragmentationBonds
OEMatchedPairIndexStatus_IncompatibleOptions = _oemedchem.OEMatchedPairIndexStatus_IncompatibleOptions
OEMatchedPairIndexStatus_BinaryIOError = _oemedchem.OEMatchedPairIndexStatus_BinaryIOError
OEMatchedPairTransformExtractMode_Unspecified = _oemedchem.OEMatchedPairTransformExtractMode_Unspecified
OEMatchedPairTransformExtractMode_Forward = _oemedchem.OEMatchedPairTransformExtractMode_Forward
OEMatchedPairTransformExtractMode_Backward = _oemedchem.OEMatchedPairTransformExtractMode_Backward
OEMatchedPairTransformExtractMode_NoSMARTS = _oemedchem.OEMatchedPairTransformExtractMode_NoSMARTS
OEMatchedPairTransformExtractMode_NoIsotopes = _oemedchem.OEMatchedPairTransformExtractMode_NoIsotopes
OEMatchedPairTransformExtractMode_Sorted = _oemedchem.OEMatchedPairTransformExtractMode_Sorted
OEMatchedPairTransformExtractMode_NoMatchedPairs = _oemedchem.OEMatchedPairTransformExtractMode_NoMatchedPairs
OEMatchedPairTransformExtractMode_NoMatchedPairData = _oemedchem.OEMatchedPairTransformExtractMode_NoMatchedPairData
OEMatchedPairTransformExtractMode_AddAttachmentPts = _oemedchem.OEMatchedPairTransformExtractMode_AddAttachmentPts
OEMatchedPairTransformExtractMode_AddMCSCorrespondence = _oemedchem.OEMatchedPairTransformExtractMode_AddMCSCorrespondence
OEMatchedPairTransformExtractMode_SuppressNodeSort = _oemedchem.OEMatchedPairTransformExtractMode_SuppressNodeSort
OEMatchedPairTransformExtractMode_SubstLimitSkip = _oemedchem.OEMatchedPairTransformExtractMode_SubstLimitSkip

OEMatchedPairTransformExtractMode_DEFAULT = OEMatchedPairTransformExtractMode_Forward|OEMatchedPairTransformExtractMode_Backward


OEMatchedPairTransformExtractMode_Default = OEMatchedPairTransformExtractMode_DEFAULT

OEMatchedPairTransformExtractMode_ValidOptions = _oemedchem.OEMatchedPairTransformExtractMode_ValidOptions
OEMatchedPairAnalyzerFileType_UNDEFINED = _oemedchem.OEMatchedPairAnalyzerFileType_UNDEFINED
OEMatchedPairAnalyzerFileType_MMPIndex = _oemedchem.OEMatchedPairAnalyzerFileType_MMPIndex
OEMatchedPairAnalyzerFileType_MCSFrags = _oemedchem.OEMatchedPairAnalyzerFileType_MCSFrags
OEMatchedPairIndexSetup_ProcessorType = _oemedchem.OEMatchedPairIndexSetup_ProcessorType
OEMatchedPairIndexSetup_BondFragLimit = _oemedchem.OEMatchedPairIndexSetup_BondFragLimit
OEMatchedPairIndexSetup_HeavyAtomLimit = _oemedchem.OEMatchedPairIndexSetup_HeavyAtomLimit
OEMatchedPairIndexSetup_FragMinMaxRange = _oemedchem.OEMatchedPairIndexSetup_FragMinMaxRange
OEMatchedPairIndexSetup_FragmentationCuts = _oemedchem.OEMatchedPairIndexSetup_FragmentationCuts
OEMatchedPairIndexSetup_IndexHydrogenSites = _oemedchem.OEMatchedPairIndexSetup_IndexHydrogenSites
OEMatchedPairIndexSetup_IndexHydrogenSingleCuts = _oemedchem.OEMatchedPairIndexSetup_IndexHydrogenSingleCuts
OEMatchedPairIndexSetup_UniquesOnly = _oemedchem.OEMatchedPairIndexSetup_UniquesOnly
OEMatchedPairIndexSetup_AllFrags = _oemedchem.OEMatchedPairIndexSetup_AllFrags
OEMatchedPairIndexSetup_All = _oemedchem.OEMatchedPairIndexSetup_All
OERegionType_Ring = _oemedchem.OERegionType_Ring
OERegionType_Linker = _oemedchem.OERegionType_Linker
OERegionType_Framework = _oemedchem.OERegionType_Framework
OERegionType_Sidechain = _oemedchem.OERegionType_Sidechain
OERegionType_All = _oemedchem.OERegionType_All
OEMCSScoreType_Undefined = _oemedchem.OEMCSScoreType_Undefined
OEMCSScoreType_AtomCount = _oemedchem.OEMCSScoreType_AtomCount
OEMCSScoreType_BondCount = _oemedchem.OEMCSScoreType_BondCount

OEMCSScoreType_Default = OEMCSScoreType_AtomCount

import openeye.oechem as oechem

def OEGetRingChainFragments(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
    """OEGetRingChainFragments(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *"""
    return _oemedchem.OEGetRingChainFragments(mol)

def OEGetRingLinkerSideChainFragments(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
    """OEGetRingLinkerSideChainFragments(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *"""
    return _oemedchem.OEGetRingLinkerSideChainFragments(mol)

def OEGetFuncGroupFragments(mol: 'OEMolBase') -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
    """OEGetFuncGroupFragments(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *"""
    return _oemedchem.OEGetFuncGroupFragments(mol)

def OEGetRingValue(mol: 'OEMolBase') -> "float":
    """OEGetRingValue(OEMolBase mol) -> float"""
    return _oemedchem.OEGetRingValue(mol)

def OECreateIDString(m: 'OEMolBase') -> "std::string":
    """OECreateIDString(OEMolBase m) -> std::string"""
    return _oemedchem.OECreateIDString(m)

def OECreateIDStrings(mol: 'OEMolBase') -> "OESystem::OEIterBase< std::string const > *":
    """OECreateIDStrings(OEMolBase mol) -> OESystem::OEIterBase< std::string const > *"""
    return _oemedchem.OECreateIDStrings(mol)

def OECalculateComboBelief(combo: 'float') -> "float":
    """OECalculateComboBelief(float combo) -> float"""
    return _oemedchem.OECalculateComboBelief(combo)

def OECalculateETComboBelief(etcombo: 'float') -> "float":
    """OECalculateETComboBelief(float etcombo) -> float"""
    return _oemedchem.OECalculateETComboBelief(etcombo)

def OEDetermineRingComplexity(mol: 'OEMolBase') -> "float":
    """OEDetermineRingComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OEDetermineRingComplexity(mol)

def OEDetermineMolecularComplexity(mol: 'OEMolBase') -> "float":
    """OEDetermineMolecularComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OEDetermineMolecularComplexity(mol)

def OENormalMolecularComplexity(mol: 'OEMolBase') -> "float":
    """OENormalMolecularComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OENormalMolecularComplexity(mol)

def OEDetermineElementalComplexity(mol: 'OEMolBase') -> "float":
    """OEDetermineElementalComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OEDetermineElementalComplexity(mol)

def OEDetermineSymmetryComplexity(mol: 'OEMolBase') -> "float":
    """OEDetermineSymmetryComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OEDetermineSymmetryComplexity(mol)

def OEDetermineConnectiveComplexity(mol: 'OEMolBase') -> "float":
    """OEDetermineConnectiveComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OEDetermineConnectiveComplexity(mol)

def OEDetermineStereoComplexity(mol: 'OEMolBase') -> "float":
    """OEDetermineStereoComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OEDetermineStereoComplexity(mol)

def OENormalStereoComplexity(mol: 'OEMolBase') -> "float":
    """OENormalStereoComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OENormalStereoComplexity(mol)

def OETotalMolecularComplexity(mol: 'OEMolBase') -> "float":
    """OETotalMolecularComplexity(OEMolBase mol) -> float"""
    return _oemedchem.OETotalMolecularComplexity(mol)

def no_op(arg1: 'OEMolBaseIter') -> "void":
    """no_op(OEMolBaseIter arg1)"""
    return _oemedchem.no_op(arg1)
class OEMatchedPairAnalyzerOptions(object):
    """Proxy of C++ OEMedChem::OEMatchedPairAnalyzerOptions class."""

    thisown = _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__(OEMedChem::OEMatchedPairAnalyzerOptions self, unsigned int processorType) -> OEMatchedPairAnalyzerOptions
        __init__(OEMedChem::OEMatchedPairAnalyzerOptions self) -> OEMatchedPairAnalyzerOptions
        __init__(OEMedChem::OEMatchedPairAnalyzerOptions self, OEMatchedPairAnalyzerOptions rhs) -> OEMatchedPairAnalyzerOptions
        """
        this = _oemedchem.new_OEMatchedPairAnalyzerOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPairAnalyzerOptions
    __del__ = lambda self: None

    def __eq__(self, rhs: 'OEMatchedPairAnalyzerOptions') -> "bool":
        """__eq__(OEMatchedPairAnalyzerOptions self, OEMatchedPairAnalyzerOptions rhs) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions___eq__(self, rhs)


    def SetProcessorType(self, *args) -> "bool":
        """
        SetProcessorType(OEMatchedPairAnalyzerOptions self, unsigned int processorType) -> bool
        SetProcessorType(OEMatchedPairAnalyzerOptions self) -> bool
        """
        return _oemedchem.OEMatchedPairAnalyzerOptions_SetProcessorType(self, *args)


    def GetProcessorType(self) -> "unsigned int":
        """GetProcessorType(OEMatchedPairAnalyzerOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetProcessorType(self)


    def SetMaxAtomFilter(self, numAtoms: 'unsigned int') -> "bool":
        """SetMaxAtomFilter(OEMatchedPairAnalyzerOptions self, unsigned int numAtoms) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_SetMaxAtomFilter(self, numAtoms)


    def GetMaxAtomFilter(self) -> "unsigned int":
        """GetMaxAtomFilter(OEMatchedPairAnalyzerOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetMaxAtomFilter(self)


    def SetFragmentationLimit(self, limit: 'unsigned int') -> "bool":
        """SetFragmentationLimit(OEMatchedPairAnalyzerOptions self, unsigned int limit) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_SetFragmentationLimit(self, limit)


    def GetFragmentationLimit(self) -> "unsigned int":
        """GetFragmentationLimit(OEMatchedPairAnalyzerOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetFragmentationLimit(self)


    def HasIndexableFragmentHeavyAtomRange(self) -> "bool":
        """HasIndexableFragmentHeavyAtomRange(OEMatchedPairAnalyzerOptions self) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_HasIndexableFragmentHeavyAtomRange(self)


    def SetIndexableFragmentRange(self, minHeavyAtomPercent: 'float', maxHeavyAtomPercent: 'float') -> "bool":
        """SetIndexableFragmentRange(OEMatchedPairAnalyzerOptions self, float minHeavyAtomPercent, float maxHeavyAtomPercent) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_SetIndexableFragmentRange(self, minHeavyAtomPercent, maxHeavyAtomPercent)


    def GetIndexableFragmentRangeMin(self) -> "float":
        """GetIndexableFragmentRangeMin(OEMatchedPairAnalyzerOptions self) -> float"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetIndexableFragmentRangeMin(self)


    def GetIndexableFragmentRangeMax(self) -> "float":
        """GetIndexableFragmentRangeMax(OEMatchedPairAnalyzerOptions self) -> float"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetIndexableFragmentRangeMax(self)


    def ClearIndexableFragmentRange(self) -> "void":
        """ClearIndexableFragmentRange(OEMatchedPairAnalyzerOptions self)"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_ClearIndexableFragmentRange(self)


    def SetOptions(self, opts: 'unsigned int') -> "bool":
        """SetOptions(OEMatchedPairAnalyzerOptions self, unsigned int opts) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_SetOptions(self, opts)


    def GetOptions(self) -> "unsigned int":
        """GetOptions(OEMatchedPairAnalyzerOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetOptions(self)


    def ModifyOptions(self, addopts: 'unsigned int', delopts: 'unsigned int') -> "bool":
        """ModifyOptions(OEMatchedPairAnalyzerOptions self, unsigned int addopts, unsigned int delopts) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzerOptions_ModifyOptions(self, addopts, delopts)


    def GetImpl(self, *args) -> "OEMedChem::OEMatchedPairOptionsImpl *":
        """
        GetImpl(OEMatchedPairAnalyzerOptions self) -> OEMedChem::OEMatchedPairOptionsImpl const
        GetImpl(OEMatchedPairAnalyzerOptions self) -> OEMedChem::OEMatchedPairOptionsImpl *
        """
        return _oemedchem.OEMatchedPairAnalyzerOptions_GetImpl(self, *args)

OEMatchedPairAnalyzerOptions_swigregister = _oemedchem.OEMatchedPairAnalyzerOptions_swigregister
OEMatchedPairAnalyzerOptions_swigregister(OEMatchedPairAnalyzerOptions)

class OEMatchedPairTransformExtractOptions(object):
    """Proxy of C++ OEMedChem::OEMatchedPairTransformExtractOptions class."""

    thisown = _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__(OEMedChem::OEMatchedPairTransformExtractOptions self, int context, unsigned int options) -> OEMatchedPairTransformExtractOptions
        __init__(OEMedChem::OEMatchedPairTransformExtractOptions self, int context) -> OEMatchedPairTransformExtractOptions
        __init__(OEMedChem::OEMatchedPairTransformExtractOptions self) -> OEMatchedPairTransformExtractOptions
        __init__(OEMedChem::OEMatchedPairTransformExtractOptions self, OEMatchedPairTransformExtractOptions rhs) -> OEMatchedPairTransformExtractOptions
        """
        this = _oemedchem.new_OEMatchedPairTransformExtractOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPairTransformExtractOptions
    __del__ = lambda self: None

    def __eq__(self, rhs: 'OEMatchedPairTransformExtractOptions') -> "bool":
        """__eq__(OEMatchedPairTransformExtractOptions self, OEMatchedPairTransformExtractOptions rhs) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions___eq__(self, rhs)


    def SetContext(self, context: 'int') -> "bool":
        """SetContext(OEMatchedPairTransformExtractOptions self, int context) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetContext(self, context)


    def GetContext(self) -> "int":
        """GetContext(OEMatchedPairTransformExtractOptions self) -> int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetContext(self)


    def SetDirection(self, direction: 'unsigned int') -> "bool":
        """SetDirection(OEMatchedPairTransformExtractOptions self, unsigned int direction) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetDirection(self, direction)


    def GetDirection(self) -> "unsigned int":
        """GetDirection(OEMatchedPairTransformExtractOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetDirection(self)


    def SetSMARTS(self, val: 'bool') -> "bool":
        """SetSMARTS(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetSMARTS(self, val)


    def GetSMARTS(self) -> "bool":
        """GetSMARTS(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetSMARTS(self)


    def SetIsotopes(self, val: 'bool') -> "bool":
        """SetIsotopes(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetIsotopes(self, val)


    def GetIsotopes(self) -> "bool":
        """GetIsotopes(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetIsotopes(self)


    def SetMatchedPairs(self, val: 'bool') -> "bool":
        """SetMatchedPairs(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetMatchedPairs(self, val)


    def GetMatchedPairs(self) -> "bool":
        """GetMatchedPairs(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMatchedPairs(self)


    def SetMatchedPairData(self, val: 'bool') -> "bool":
        """SetMatchedPairData(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetMatchedPairData(self, val)


    def GetMatchedPairData(self) -> "bool":
        """GetMatchedPairData(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMatchedPairData(self)


    def SetAttachmentPoints(self, val: 'bool') -> "bool":
        """SetAttachmentPoints(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetAttachmentPoints(self, val)


    def GetAttachmentPoints(self) -> "bool":
        """GetAttachmentPoints(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetAttachmentPoints(self)


    def SetMCSCorrespondence(self, val: 'bool') -> "bool":
        """SetMCSCorrespondence(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetMCSCorrespondence(self, val)


    def GetMCSCorrespondence(self) -> "bool":
        """GetMCSCorrespondence(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMCSCorrespondence(self)


    def SetOptions(self, opts: 'unsigned int') -> "bool":
        """SetOptions(OEMatchedPairTransformExtractOptions self, unsigned int opts) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetOptions(self, opts)


    def GetOptions(self) -> "unsigned int":
        """GetOptions(OEMatchedPairTransformExtractOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetOptions(self)


    def SetMMPLimit(self, atLeast: 'unsigned int', atMost: 'unsigned int'=0) -> "bool":
        """
        SetMMPLimit(OEMatchedPairTransformExtractOptions self, unsigned int atLeast, unsigned int atMost=0) -> bool
        SetMMPLimit(OEMatchedPairTransformExtractOptions self, unsigned int atLeast) -> bool
        """
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetMMPLimit(self, atLeast, atMost)


    def GetMinMMPLimit(self) -> "unsigned int":
        """GetMinMMPLimit(OEMatchedPairTransformExtractOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMinMMPLimit(self)


    def GetMaxMMPLimit(self) -> "unsigned int":
        """GetMaxMMPLimit(OEMatchedPairTransformExtractOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMaxMMPLimit(self)


    def SetSubstituentLimit(self, atLeast: 'unsigned int', atMost: 'unsigned int'=0) -> "bool":
        """
        SetSubstituentLimit(OEMatchedPairTransformExtractOptions self, unsigned int atLeast, unsigned int atMost=0) -> bool
        SetSubstituentLimit(OEMatchedPairTransformExtractOptions self, unsigned int atLeast) -> bool
        """
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetSubstituentLimit(self, atLeast, atMost)


    def GetMinSubstituentLimit(self) -> "unsigned int":
        """GetMinSubstituentLimit(OEMatchedPairTransformExtractOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMinSubstituentLimit(self)


    def GetMaxSubstituentLimit(self) -> "unsigned int":
        """GetMaxSubstituentLimit(OEMatchedPairTransformExtractOptions self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMaxSubstituentLimit(self)


    def SetMaxSubstituentLimitSkip(self, val: 'bool') -> "bool":
        """SetMaxSubstituentLimitSkip(OEMatchedPairTransformExtractOptions self, bool val) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_SetMaxSubstituentLimitSkip(self, val)


    def GetMaxSubstituentLimitSkip(self) -> "bool":
        """GetMaxSubstituentLimitSkip(OEMatchedPairTransformExtractOptions self) -> bool"""
        return _oemedchem.OEMatchedPairTransformExtractOptions_GetMaxSubstituentLimitSkip(self)

OEMatchedPairTransformExtractOptions_swigregister = _oemedchem.OEMatchedPairTransformExtractOptions_swigregister
OEMatchedPairTransformExtractOptions_swigregister(OEMatchedPairTransformExtractOptions)


def OEMatchedPairContextName(context: 'int') -> "char const *":
    """OEMatchedPairContextName(int context) -> char const *"""
    return _oemedchem.OEMatchedPairContextName(context)

def OEMatchedPairContextType(sContextname: 'std::string const &') -> "int":
    """OEMatchedPairContextType(std::string const & sContextname) -> int"""
    return _oemedchem.OEMatchedPairContextType(sContextname)

def OEMatchedPairProcessorName(proctype: 'unsigned int') -> "char const *":
    """OEMatchedPairProcessorName(unsigned int proctype) -> char const *"""
    return _oemedchem.OEMatchedPairProcessorName(proctype)

def OEMatchedPairProcessorType(sProctype: 'std::string const &') -> "unsigned int":
    """OEMatchedPairProcessorType(std::string const & sProctype) -> unsigned int"""
    return _oemedchem.OEMatchedPairProcessorType(sProctype)

def OEMatchedPairOptionsName(option: 'unsigned int') -> "char const *":
    """OEMatchedPairOptionsName(unsigned int option) -> char const *"""
    return _oemedchem.OEMatchedPairOptionsName(option)

def OEMatchedPairOptionsType(sOption: 'std::string const &') -> "unsigned int":
    """OEMatchedPairOptionsType(std::string const & sOption) -> unsigned int"""
    return _oemedchem.OEMatchedPairOptionsType(sOption)

def OEMatchedPairIndexStatusName(status: 'int') -> "char const *":
    """OEMatchedPairIndexStatusName(int status) -> char const *"""
    return _oemedchem.OEMatchedPairIndexStatusName(status)

def OEMatchedPairIndexStatusType(sinput: 'std::string const &') -> "int":
    """OEMatchedPairIndexStatusType(std::string const & sinput) -> int"""
    return _oemedchem.OEMatchedPairIndexStatusType(sinput)
class OEMatchedPairAnalyzer(object):
    """Proxy of C++ OEMedChem::OEMatchedPairAnalyzer class."""

    thisown = _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__(OEMedChem::OEMatchedPairAnalyzer self, OEMatchedPairAnalyzerOptions opts) -> OEMatchedPairAnalyzer
        __init__(OEMedChem::OEMatchedPairAnalyzer self) -> OEMatchedPairAnalyzer
        """
        this = _oemedchem.new_OEMatchedPairAnalyzer(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPairAnalyzer
    __del__ = lambda self: None

    def GetOptions(self) -> "OEMedChem::OEMatchedPairAnalyzerOptions const &":
        """GetOptions(OEMatchedPairAnalyzer self) -> OEMatchedPairAnalyzerOptions"""
        return _oemedchem.OEMatchedPairAnalyzer_GetOptions(self)


    def ModifyOptions(self, addopts: 'unsigned int', delopts: 'unsigned int') -> "bool":
        """ModifyOptions(OEMatchedPairAnalyzer self, unsigned int addopts, unsigned int delopts) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzer_ModifyOptions(self, addopts, delopts)


    def GetProcessorType(self) -> "unsigned int":
        """GetProcessorType(OEMatchedPairAnalyzer self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzer_GetProcessorType(self)


    def GetProcessorID(self) -> "char const *":
        """GetProcessorID(OEMatchedPairAnalyzer self) -> char const *"""
        return _oemedchem.OEMatchedPairAnalyzer_GetProcessorID(self)


    def NumMols(self) -> "unsigned int":
        """NumMols(OEMatchedPairAnalyzer self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzer_NumMols(self)


    def NumIndexNodes(self) -> "unsigned int":
        """NumIndexNodes(OEMatchedPairAnalyzer self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzer_NumIndexNodes(self)


    def NumMatchedPairs(self) -> "unsigned int":
        """NumMatchedPairs(OEMatchedPairAnalyzer self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzer_NumMatchedPairs(self)


    def GetMaxMolIdx(self) -> "unsigned int":
        """GetMaxMolIdx(OEMatchedPairAnalyzer self) -> unsigned int"""
        return _oemedchem.OEMatchedPairAnalyzer_GetMaxMolIdx(self)


    def IsIndexed(self, recID: 'unsigned int') -> "bool":
        """IsIndexed(OEMatchedPairAnalyzer self, unsigned int recID) -> bool"""
        return _oemedchem.OEMatchedPairAnalyzer_IsIndexed(self, recID)


    def GetMolecule(self, mol: 'OEMolBase', recID: 'unsigned int', includeData: 'bool'=True) -> "bool":
        """
        GetMolecule(OEMatchedPairAnalyzer self, OEMolBase mol, unsigned int recID, bool includeData=True) -> bool
        GetMolecule(OEMatchedPairAnalyzer self, OEMolBase mol, unsigned int recID) -> bool
        """
        return _oemedchem.OEMatchedPairAnalyzer_GetMolecule(self, mol, recID, includeData)


    def AddMol(self, *args) -> "int":
        """
        AddMol(OEMatchedPairAnalyzer self, OEMolBase inmol, int recID) -> int
        AddMol(OEMatchedPairAnalyzer self, OEMolBase inmol) -> int
        """
        return _oemedchem.OEMatchedPairAnalyzer_AddMol(self, *args)

OEMatchedPairAnalyzer_swigregister = _oemedchem.OEMatchedPairAnalyzer_swigregister
OEMatchedPairAnalyzer_swigregister(OEMatchedPairAnalyzer)


def OEMatchedPairApplyTransforms(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEMatchedPairApplyTransforms(OEMolBase mol, OEMatchedPairAnalyzer mmp, int context, unsigned int requireNumPairs=0) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEMatchedPairApplyTransforms(OEMolBase mol, OEMatchedPairAnalyzer mmp, int context) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEMatchedPairApplyTransforms(OEMolBase mol, OEMatchedPairAnalyzer mmp) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oemedchem.OEMatchedPairApplyTransforms(*args)

def OEApplyChEMBL18SolubilityTransforms(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEApplyChEMBL18SolubilityTransforms(OEMolBase input, int context, unsigned int requireNumPairs=5) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEApplyChEMBL18SolubilityTransforms(OEMolBase input, int context) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEApplyChEMBL18SolubilityTransforms(OEMolBase input) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oemedchem.OEApplyChEMBL18SolubilityTransforms(*args)

def OEApplyChEMBL24SolubilityTransforms(*args) -> "OESystem::OEIterBase< OEChem::OEMolBase > *":
    """
    OEApplyChEMBL24SolubilityTransforms(OEMolBase input, int context, unsigned int requireNumPairs=5) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEApplyChEMBL24SolubilityTransforms(OEMolBase input, int context) -> OESystem::OEIterBase< OEChem::OEMolBase >
    OEApplyChEMBL24SolubilityTransforms(OEMolBase input) -> OESystem::OEIterBase< OEChem::OEMolBase > *
    """
    return _oemedchem.OEApplyChEMBL24SolubilityTransforms(*args)

def OEGetMatchedPairAnalyzerFileType(extn: 'char const *') -> "unsigned int":
    """OEGetMatchedPairAnalyzerFileType(char const * extn) -> unsigned int"""
    return _oemedchem.OEGetMatchedPairAnalyzerFileType(extn)

def OEIsMatchedPairAnalyzerFileType(*args) -> "bool":
    """
    OEIsMatchedPairAnalyzerFileType(unsigned int type) -> bool
    OEIsMatchedPairAnalyzerFileType(std::string const & filename) -> bool
    """
    return _oemedchem.OEIsMatchedPairAnalyzerFileType(*args)

def OEIsReadableMatchedPairAnalyzer(*args) -> "bool":
    """
    OEIsReadableMatchedPairAnalyzer(unsigned int type) -> bool
    OEIsReadableMatchedPairAnalyzer(std::string const & filename) -> bool
    """
    return _oemedchem.OEIsReadableMatchedPairAnalyzer(*args)

def OEIsWriteableMatchedPairAnalyzer(*args) -> "bool":
    """
    OEIsWriteableMatchedPairAnalyzer(unsigned int type) -> bool
    OEIsWriteableMatchedPairAnalyzer(std::string const & filename) -> bool
    """
    return _oemedchem.OEIsWriteableMatchedPairAnalyzer(*args)

def OEReadMatchedPairAnalyzer(*args) -> "bool":
    """
    OEReadMatchedPairAnalyzer(std::string const & fname, OEMatchedPairAnalyzer mmpindex, bool enableMerge=False, bool regenHKeys=False) -> bool
    OEReadMatchedPairAnalyzer(std::string const & fname, OEMatchedPairAnalyzer mmpindex, bool enableMerge=False) -> bool
    OEReadMatchedPairAnalyzer(std::string const & fname, OEMatchedPairAnalyzer mmpindex) -> bool
    OEReadMatchedPairAnalyzer(oeistream ifs, OEMatchedPairAnalyzer mmpindex, bool enableMerge=False, bool regenHKeys=False) -> bool
    OEReadMatchedPairAnalyzer(oeistream ifs, OEMatchedPairAnalyzer mmpindex, bool enableMerge=False) -> bool
    OEReadMatchedPairAnalyzer(oeistream ifs, OEMatchedPairAnalyzer mmpindex) -> bool
    """
    return _oemedchem.OEReadMatchedPairAnalyzer(*args)

def OEWriteMatchedPairAnalyzer(*args) -> "bool":
    """
    OEWriteMatchedPairAnalyzer(std::string const & fname, OEMatchedPairAnalyzer mmpindex) -> bool
    OEWriteMatchedPairAnalyzer(oeostream ofs, OEMatchedPairAnalyzer mmpindex) -> bool
    """
    return _oemedchem.OEWriteMatchedPairAnalyzer(*args)

def OEWriteMMPIndexMolecules(*args) -> "int":
    """
    OEWriteMMPIndexMolecules(oeostream ofs, unsigned int recID, OEMolBase inmol, OEMatchedPairAnalyzer mmpindex, bool initStream=False) -> int
    OEWriteMMPIndexMolecules(oeostream ofs, unsigned int recID, OEMolBase inmol, OEMatchedPairAnalyzer mmpindex) -> int
    OEWriteMMPIndexMolecules(std::string & fragbytes, unsigned int recID, OEMolBase inmol, OEMatchedPairAnalyzer mmpindex, bool writeHeader=False) -> int
    OEWriteMMPIndexMolecules(std::string & fragbytes, unsigned int recID, OEMolBase inmol, OEMatchedPairAnalyzer mmpindex) -> int
    """
    return _oemedchem.OEWriteMMPIndexMolecules(*args)

def OEReadMMPIndexMolecules(*args) -> "bool":
    """
    OEReadMMPIndexMolecules(oeistream ifs, OEMatchedPairAnalyzer mmpindex, bool regenHKeys=False) -> bool
    OEReadMMPIndexMolecules(oeistream ifs, OEMatchedPairAnalyzer mmpindex) -> bool
    OEReadMMPIndexMolecules(std::string const & fragbytes, OEMatchedPairAnalyzer mmpindex, bool regenHKeys=False) -> bool
    OEReadMMPIndexMolecules(std::string const & fragbytes, OEMatchedPairAnalyzer mmpindex) -> bool
    """
    return _oemedchem.OEReadMMPIndexMolecules(*args)

def OEGetMatchedMolecularPairs(*args) -> "OESystem::OEIterBase< OEMedChem::OEMatchedPair > *":
    """
    OEGetMatchedMolecularPairs(OEMatchedPairAnalyzer mmpindex, unsigned int molID, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair >
    OEGetMatchedMolecularPairs(OEMatchedPairAnalyzer mmpindex, unsigned int molID) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair >
    OEGetMatchedMolecularPairs(OEMatchedPairAnalyzer mmpindex, OEMolBase probe, OEAtomBondSet probeAttachSites, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair >
    OEGetMatchedMolecularPairs(OEMatchedPairAnalyzer mmpindex, OEMolBase probe, OEAtomBondSet probeAttachSites) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair > *
    """
    return _oemedchem.OEGetMatchedMolecularPairs(*args)

def OEWriteMMPIndexMoleculesToBytes(recID: 'unsigned int', inmol: 'OEMolBase', mmpindex: 'OEMatchedPairAnalyzer', writeHeader: 'bool'=True) -> "PyObject *":
    """
    OEWriteMMPIndexMoleculesToBytes(unsigned int recID, OEMolBase inmol, OEMatchedPairAnalyzer mmpindex, bool writeHeader=True) -> PyObject
    OEWriteMMPIndexMoleculesToBytes(unsigned int recID, OEMolBase inmol, OEMatchedPairAnalyzer mmpindex) -> PyObject *
    """
    return _oemedchem.OEWriteMMPIndexMoleculesToBytes(recID, inmol, mmpindex, writeHeader)

def OEReadMMPIndexMoleculesFromBytes(bytes: 'PyObject *', mmpindex: 'OEMatchedPairAnalyzer', regenHKeys: 'bool'=False) -> "PyObject *":
    """
    OEReadMMPIndexMoleculesFromBytes(PyObject * bytes, OEMatchedPairAnalyzer mmpindex, bool regenHKeys=False) -> PyObject
    OEReadMMPIndexMoleculesFromBytes(PyObject * bytes, OEMatchedPairAnalyzer mmpindex) -> PyObject *
    """
    return _oemedchem.OEReadMMPIndexMoleculesFromBytes(bytes, mmpindex, regenHKeys)
class OEMCSFragDatabaseOptions(object):
    """Proxy of C++ OEMedChem::OEMCSFragDatabaseOptions class."""

    thisown = _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__(OEMedChem::OEMCSFragDatabaseOptions self, OEMCSFragDatabaseOptions arg2) -> OEMCSFragDatabaseOptions
        __init__(OEMedChem::OEMCSFragDatabaseOptions self) -> OEMCSFragDatabaseOptions
        """
        this = _oemedchem.new_OEMCSFragDatabaseOptions(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMCSFragDatabaseOptions
    __del__ = lambda self: None

    def SetMaxAtomFilter(self, numAtoms: 'unsigned int') -> "bool":
        """SetMaxAtomFilter(OEMCSFragDatabaseOptions self, unsigned int numAtoms) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_SetMaxAtomFilter(self, numAtoms)


    def GetMaxAtomFilter(self) -> "unsigned int":
        """GetMaxAtomFilter(OEMCSFragDatabaseOptions self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetMaxAtomFilter(self)


    def SetFragmentationLimit(self, limit: 'unsigned int') -> "bool":
        """SetFragmentationLimit(OEMCSFragDatabaseOptions self, unsigned int limit) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_SetFragmentationLimit(self, limit)


    def GetFragmentationLimit(self) -> "unsigned int":
        """GetFragmentationLimit(OEMCSFragDatabaseOptions self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetFragmentationLimit(self)


    def HasIndexableFragmentHeavyAtomRange(self) -> "bool":
        """HasIndexableFragmentHeavyAtomRange(OEMCSFragDatabaseOptions self) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_HasIndexableFragmentHeavyAtomRange(self)


    def SetIndexableFragmentRange(self, minHeavyAtomPercent: 'float', maxHeavyAtomPercent: 'float') -> "bool":
        """SetIndexableFragmentRange(OEMCSFragDatabaseOptions self, float minHeavyAtomPercent, float maxHeavyAtomPercent) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_SetIndexableFragmentRange(self, minHeavyAtomPercent, maxHeavyAtomPercent)


    def GetIndexableFragmentRangeMin(self) -> "float":
        """GetIndexableFragmentRangeMin(OEMCSFragDatabaseOptions self) -> float"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetIndexableFragmentRangeMin(self)


    def GetIndexableFragmentRangeMax(self) -> "float":
        """GetIndexableFragmentRangeMax(OEMCSFragDatabaseOptions self) -> float"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetIndexableFragmentRangeMax(self)


    def ClearIndexableFragmentRange(self) -> "void":
        """ClearIndexableFragmentRange(OEMCSFragDatabaseOptions self)"""
        return _oemedchem.OEMCSFragDatabaseOptions_ClearIndexableFragmentRange(self)


    def SetOptions(self, opts: 'unsigned int') -> "bool":
        """SetOptions(OEMCSFragDatabaseOptions self, unsigned int opts) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_SetOptions(self, opts)


    def GetOptions(self) -> "unsigned int":
        """GetOptions(OEMCSFragDatabaseOptions self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetOptions(self)


    def SetFragLimits(self, minval: 'unsigned int', maxval: 'unsigned int') -> "bool":
        """SetFragLimits(OEMCSFragDatabaseOptions self, unsigned int minval, unsigned int maxval) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_SetFragLimits(self, minval, maxval)


    def GetMinFragLimit(self) -> "unsigned int":
        """GetMinFragLimit(OEMCSFragDatabaseOptions self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetMinFragLimit(self)


    def GetMaxFragLimit(self) -> "unsigned int":
        """GetMaxFragLimit(OEMCSFragDatabaseOptions self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetMaxFragLimit(self)


    def SetRingFragLimit(self, val: 'unsigned int') -> "bool":
        """SetRingFragLimit(OEMCSFragDatabaseOptions self, unsigned int val) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions_SetRingFragLimit(self, val)


    def GetRingFragLimit(self) -> "unsigned int":
        """GetRingFragLimit(OEMCSFragDatabaseOptions self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabaseOptions_GetRingFragLimit(self)


    def __eq__(self, rhs: 'OEMCSFragDatabaseOptions') -> "bool":
        """__eq__(OEMCSFragDatabaseOptions self, OEMCSFragDatabaseOptions rhs) -> bool"""
        return _oemedchem.OEMCSFragDatabaseOptions___eq__(self, rhs)

OEMCSFragDatabaseOptions_swigregister = _oemedchem.OEMCSFragDatabaseOptions_swigregister
OEMCSFragDatabaseOptions_swigregister(OEMCSFragDatabaseOptions)

class OEMCSMolSimScore(object):
    """Proxy of C++ OEMedChem::OEMCSMolSimScore class."""

    thisown = _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__(OEMedChem::OEMCSMolSimScore self) -> OEMCSMolSimScore
        __init__(OEMedChem::OEMCSMolSimScore self, unsigned int i, double s, std::string const & sc) -> OEMCSMolSimScore
        __init__(OEMedChem::OEMCSMolSimScore self, OEMCSMolSimScore ref) -> OEMCSMolSimScore
        """
        this = _oemedchem.new_OEMCSMolSimScore(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def GetIdx(self) -> "unsigned int":
        """GetIdx(OEMCSMolSimScore self) -> unsigned int"""
        return _oemedchem.OEMCSMolSimScore_GetIdx(self)


    def GetScore(self) -> "double":
        """GetScore(OEMCSMolSimScore self) -> double"""
        return _oemedchem.OEMCSMolSimScore_GetScore(self)


    def GetMCSCore(self) -> "std::string":
        """GetMCSCore(OEMCSMolSimScore self) -> std::string"""
        return _oemedchem.OEMCSMolSimScore_GetMCSCore(self)


    def Set(self, i: 'unsigned int', s: 'double', core: 'std::string const &') -> "void":
        """Set(OEMCSMolSimScore self, unsigned int i, double s, std::string const & core)"""
        return _oemedchem.OEMCSMolSimScore_Set(self, i, s, core)

    idx = _swig_property(_oemedchem.OEMCSMolSimScore_idx_get, _oemedchem.OEMCSMolSimScore_idx_set)
    score = _swig_property(_oemedchem.OEMCSMolSimScore_score_get, _oemedchem.OEMCSMolSimScore_score_set)
    mcscore = _swig_property(_oemedchem.OEMCSMolSimScore_mcscore_get, _oemedchem.OEMCSMolSimScore_mcscore_set)
    __swig_destroy__ = _oemedchem.delete_OEMCSMolSimScore
    __del__ = lambda self: None
OEMCSMolSimScore_swigregister = _oemedchem.OEMCSMolSimScore_swigregister
OEMCSMolSimScore_swigregister(OEMCSMolSimScore)

class OEMCSSimFuncBase(object):
    """Proxy of C++ OEMedChem::OEMCSSimFuncBase class."""

    thisown = _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__(OEMedChem::OEMCSSimFuncBase self) -> OEMCSSimFuncBase"""
        if self.__class__ == OEMCSSimFuncBase:
            _self = None
        else:
            _self = self
        this = _oemedchem.new_OEMCSSimFuncBase(_self, )
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMCSSimFuncBase
    __del__ = lambda self: None

    def __call__(self, commonAB: 'unsigned int', totalA: 'unsigned int', totalB: 'unsigned int') -> "double":
        """__call__(OEMCSSimFuncBase self, unsigned int commonAB, unsigned int totalA, unsigned int totalB) -> double"""
        return _oemedchem.OEMCSSimFuncBase___call__(self, commonAB, totalA, totalB)


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



    def GetMCSSimTypeString(self) -> "std::string":
        """GetMCSSimTypeString(OEMCSSimFuncBase self) -> std::string"""
        return _oemedchem.OEMCSSimFuncBase_GetMCSSimTypeString(self)

    def __disown__(self):
        self.this.disown()
        _oemedchem.disown_OEMCSSimFuncBase(self)
        return weakref_proxy(self)
OEMCSSimFuncBase_swigregister = _oemedchem.OEMCSSimFuncBase_swigregister
OEMCSSimFuncBase_swigregister(OEMCSSimFuncBase)

class OEMCSTanimotoSim(OEMCSSimFuncBase):
    """Proxy of C++ OEMedChem::OEMCSTanimotoSim class."""

    thisown = _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__(OEMedChem::OEMCSTanimotoSim self) -> OEMCSTanimotoSim"""
        this = _oemedchem.new_OEMCSTanimotoSim()
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, commonAB: 'unsigned int', totalA: 'unsigned int', totalB: 'unsigned int') -> "double":
        """__call__(OEMCSTanimotoSim self, unsigned int commonAB, unsigned int totalA, unsigned int totalB) -> double"""
        return _oemedchem.OEMCSTanimotoSim___call__(self, commonAB, totalA, totalB)


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



    def GetMCSSimTypeString(self) -> "std::string":
        """GetMCSSimTypeString(OEMCSTanimotoSim self) -> std::string"""
        return _oemedchem.OEMCSTanimotoSim_GetMCSSimTypeString(self)

    __swig_destroy__ = _oemedchem.delete_OEMCSTanimotoSim
    __del__ = lambda self: None
OEMCSTanimotoSim_swigregister = _oemedchem.OEMCSTanimotoSim_swigregister
OEMCSTanimotoSim_swigregister(OEMCSTanimotoSim)

class OEMCSTverskySim(OEMCSSimFuncBase):
    """Proxy of C++ OEMedChem::OEMCSTverskySim class."""

    thisown = _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__(OEMedChem::OEMCSTverskySim self, double tvAlpha=0.95, double tvBeta=0.05) -> OEMCSTverskySim
        __init__(OEMedChem::OEMCSTverskySim self, double tvAlpha=0.95) -> OEMCSTverskySim
        __init__(OEMedChem::OEMCSTverskySim self) -> OEMCSTverskySim
        __init__(OEMedChem::OEMCSTverskySim self, OEMCSTverskySim ref) -> OEMCSTverskySim
        """
        this = _oemedchem.new_OEMCSTverskySim(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this

    def __call__(self, commonAB: 'unsigned int', totalA: 'unsigned int', totalB: 'unsigned int') -> "double":
        """__call__(OEMCSTverskySim self, unsigned int commonAB, unsigned int totalA, unsigned int totalB) -> double"""
        return _oemedchem.OEMCSTverskySim___call__(self, commonAB, totalA, totalB)


    def GetAlpha(self) -> "double":
        """GetAlpha(OEMCSTverskySim self) -> double"""
        return _oemedchem.OEMCSTverskySim_GetAlpha(self)


    def GetBeta(self) -> "double":
        """GetBeta(OEMCSTverskySim self) -> double"""
        return _oemedchem.OEMCSTverskySim_GetBeta(self)


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



    def GetMCSSimTypeString(self) -> "std::string":
        """GetMCSSimTypeString(OEMCSTverskySim self) -> std::string"""
        return _oemedchem.OEMCSTverskySim_GetMCSSimTypeString(self)

    __swig_destroy__ = _oemedchem.delete_OEMCSTverskySim
    __del__ = lambda self: None
OEMCSTverskySim_swigregister = _oemedchem.OEMCSTverskySim_swigregister
OEMCSTverskySim_swigregister(OEMCSTverskySim)

class OEMCSFragDatabase(object):
    """Proxy of C++ OEMedChem::OEMCSFragDatabase class."""

    thisown = _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__(OEMedChem::OEMCSFragDatabase self, OEMCSFragDatabaseOptions opts) -> OEMCSFragDatabase
        __init__(OEMedChem::OEMCSFragDatabase self) -> OEMCSFragDatabase
        """
        this = _oemedchem.new_OEMCSFragDatabase(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMCSFragDatabase
    __del__ = lambda self: None

    def AddConstMol(self, *args) -> "int":
        """
        AddConstMol(OEMCSFragDatabase self, OEMolBase inmol, int recID) -> int
        AddConstMol(OEMCSFragDatabase self, OEMolBase inmol) -> int
        """
        return _oemedchem.OEMCSFragDatabase_AddConstMol(self, *args)


    def AddMol(self, *args) -> "int":
        """
        AddMol(OEMCSFragDatabase self, OEMolBase inmol, int recID) -> int
        AddMol(OEMCSFragDatabase self, OEMolBase inmol) -> int
        """
        return _oemedchem.OEMCSFragDatabase_AddMol(self, *args)


    def ProcessMol(self, inmol: 'OEMolBase') -> "int":
        """ProcessMol(OEMCSFragDatabase self, OEMolBase inmol) -> int"""
        return _oemedchem.OEMCSFragDatabase_ProcessMol(self, inmol)


    def GetScores(self, *args) -> "OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > *":
        """
        GetScores(OEMCSFragDatabase self, OEMolBase query, unsigned int bgn=0, unsigned int end=0, unsigned int scorecounts, OEMCSSimFuncBase scorefn) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetScores(OEMCSFragDatabase self, OEMolBase query, unsigned int bgn=0, unsigned int end=0, unsigned int scorecounts) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetScores(OEMCSFragDatabase self, OEMolBase query, unsigned int bgn=0, unsigned int end=0) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetScores(OEMCSFragDatabase self, OEMolBase query, unsigned int bgn=0) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetScores(OEMCSFragDatabase self, OEMolBase query) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > *
        """
        return _oemedchem.OEMCSFragDatabase_GetScores(self, *args)


    def GetSortedScores(self, *args) -> "OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > *":
        """
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query, unsigned int limit=0, unsigned int bgn=0, unsigned int end=0, bool descending=True, unsigned int scorecounts, OEMCSSimFuncBase scorefn) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query, unsigned int limit=0, unsigned int bgn=0, unsigned int end=0, bool descending=True, unsigned int scorecounts) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query, unsigned int limit=0, unsigned int bgn=0, unsigned int end=0, bool descending=True) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query, unsigned int limit=0, unsigned int bgn=0, unsigned int end=0) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query, unsigned int limit=0, unsigned int bgn=0) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query, unsigned int limit=0) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore >
        GetSortedScores(OEMCSFragDatabase self, OEMolBase query) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > *
        """
        return _oemedchem.OEMCSFragDatabase_GetSortedScores(self, *args)


    def CoreToMolecules(self, core: 'std::string const &') -> "OESystem::OEIterBase< unsigned int > *":
        """CoreToMolecules(OEMCSFragDatabase self, std::string const & core) -> OESystem::OEIterBase< unsigned int > *"""
        return _oemedchem.OEMCSFragDatabase_CoreToMolecules(self, core)


    def MoleculeToCores(self, mol: 'OEMolBase', permuteFragments: 'bool'=True) -> "OESystem::OEIterBase< std::string const > *":
        """
        MoleculeToCores(OEMCSFragDatabase self, OEMolBase mol, bool permuteFragments=True) -> OESystem::OEIterBase< std::string const >
        MoleculeToCores(OEMCSFragDatabase self, OEMolBase mol) -> OESystem::OEIterBase< std::string const > *
        """
        return _oemedchem.OEMCSFragDatabase_MoleculeToCores(self, mol, permuteFragments)


    def GetOptions(self) -> "OEMedChem::OEMCSFragDatabaseOptions const &":
        """GetOptions(OEMCSFragDatabase self) -> OEMCSFragDatabaseOptions"""
        return _oemedchem.OEMCSFragDatabase_GetOptions(self)


    def NumMols(self) -> "unsigned int":
        """NumMols(OEMCSFragDatabase self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabase_NumMols(self)


    def NumFragments(self) -> "unsigned int":
        """NumFragments(OEMCSFragDatabase self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabase_NumFragments(self)


    def GetMaxMolIdx(self) -> "unsigned int":
        """GetMaxMolIdx(OEMCSFragDatabase self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabase_GetMaxMolIdx(self)


    def ClearIndexedMols(self) -> "void":
        """ClearIndexedMols(OEMCSFragDatabase self)"""
        return _oemedchem.OEMCSFragDatabase_ClearIndexedMols(self)


    def IsIndexed(self, recID: 'unsigned int') -> "bool":
        """IsIndexed(OEMCSFragDatabase self, unsigned int recID) -> bool"""
        return _oemedchem.OEMCSFragDatabase_IsIndexed(self, recID)


    def CoreToMoleculeCount(self, core: 'std::string const &') -> "unsigned int":
        """CoreToMoleculeCount(OEMCSFragDatabase self, std::string const & core) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabase_CoreToMoleculeCount(self, core)


    def GetMaxCoreMoleculeCount(self) -> "unsigned int":
        """GetMaxCoreMoleculeCount(OEMCSFragDatabase self) -> unsigned int"""
        return _oemedchem.OEMCSFragDatabase_GetMaxCoreMoleculeCount(self)


    def GetMaxCoreMolecule(self, *args) -> "std::string":
        """
        GetMaxCoreMolecule(OEMCSFragDatabase self, char const delim) -> std::string
        GetMaxCoreMolecule(OEMCSFragDatabase self) -> std::string
        """
        return _oemedchem.OEMCSFragDatabase_GetMaxCoreMolecule(self, *args)

OEMCSFragDatabase_swigregister = _oemedchem.OEMCSFragDatabase_swigregister
OEMCSFragDatabase_swigregister(OEMCSFragDatabase)


def OEIsMCSFragDatabaseFiletype(*args) -> "bool":
    """
    OEIsMCSFragDatabaseFiletype(unsigned int type) -> bool
    OEIsMCSFragDatabaseFiletype(std::string const & filename) -> bool
    """
    return _oemedchem.OEIsMCSFragDatabaseFiletype(*args)

def OEIsMCSFragDatabaseFileType(*args) -> "bool":
    """
    OEIsMCSFragDatabaseFileType(unsigned int type) -> bool
    OEIsMCSFragDatabaseFileType(std::string const & filename) -> bool
    """
    return _oemedchem.OEIsMCSFragDatabaseFileType(*args)

def OEReadMCSFragDatabase(*args) -> "bool":
    """
    OEReadMCSFragDatabase(std::string const & fname, OEMCSFragDatabase mcsfragdb, bool enableMerge=False) -> bool
    OEReadMCSFragDatabase(std::string const & fname, OEMCSFragDatabase mcsfragdb) -> bool
    OEReadMCSFragDatabase(oeistream ifs, OEMCSFragDatabase mcsfragdb, bool enableMerge=False) -> bool
    OEReadMCSFragDatabase(oeistream ifs, OEMCSFragDatabase mcsfragdb) -> bool
    """
    return _oemedchem.OEReadMCSFragDatabase(*args)

def OEWriteMCSFragDatabase(*args) -> "bool":
    """
    OEWriteMCSFragDatabase(std::string const & fname, OEMCSFragDatabase mcsfragdb) -> bool
    OEWriteMCSFragDatabase(oeostream ofs, OEMCSFragDatabase mcsfragdb) -> bool
    """
    return _oemedchem.OEWriteMCSFragDatabase(*args)

def OEMoleculeToCores(mol: 'OEMolBase', fragopts: 'OEMCSFragDatabaseOptions', permuteFragments: 'bool'=True) -> "OESystem::OEIterBase< std::string const > *":
    """
    OEMoleculeToCores(OEMolBase mol, OEMCSFragDatabaseOptions fragopts, bool permuteFragments=True) -> OESystem::OEIterBase< std::string const >
    OEMoleculeToCores(OEMolBase mol, OEMCSFragDatabaseOptions fragopts) -> OESystem::OEIterBase< std::string const > *
    """
    return _oemedchem.OEMoleculeToCores(mol, fragopts, permuteFragments)
class OEMCSMolSimScoreIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMedChem::OEMCSMolSimScore)> class."""

    thisown = _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<(OEMedChem::OEMCSMolSimScore)> self) -> OEMCSMolSimScoreIter
        __init__(OESystem::OEIter<(OEMedChem::OEMCSMolSimScore)> self, OEMCSMolSimScoreIter rhs) -> OEMCSMolSimScoreIter
        __init__(OESystem::OEIter<(OEMedChem::OEMCSMolSimScore)> self, OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > * rhs) -> OEMCSMolSimScoreIter
        __init__(OESystem::OEIter<(OEMedChem::OEMCSMolSimScore)> self, OESystem::OEIterBase< OESystem::OEIter< OEMedChem::OEMCSMolSimScore >::NonConstA > * rhs) -> OEMCSMolSimScoreIter
        """
        this = _oemedchem.new_OEMCSMolSimScoreIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMCSMolSimScoreIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > *":
        """Copy(OEMCSMolSimScoreIter self) -> OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > *"""
        return _oemedchem.OEMCSMolSimScoreIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMCSMolSimScoreIter self, OESystem::OEIterBase< OEMedChem::OEMCSMolSimScore > * ib)
        Push(OEMCSMolSimScoreIter self, OEMCSMolSimScoreIter iter)
        """
        return _oemedchem.OEMCSMolSimScoreIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMedChem::OEMCSMolSimScore,OEMedChem::OEMCSMolSimScore > const &') -> "void":
        """Sort(OEMCSMolSimScoreIter self, OESystem::OEBinaryPredicate< OEMedChem::OEMCSMolSimScore,OEMedChem::OEMCSMolSimScore > const & sort_criterion)"""
        return _oemedchem.OEMCSMolSimScoreIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMedChem::OEMCSMolSimScore > &":
        """ToFirst(OEMCSMolSimScoreIter self) -> OEMCSMolSimScoreIter"""
        return _oemedchem.OEMCSMolSimScoreIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMedChem::OEMCSMolSimScore > &":
        """ToLast(OEMCSMolSimScoreIter self) -> OEMCSMolSimScoreIter"""
        return _oemedchem.OEMCSMolSimScoreIter_ToLast(self)


    def __ref__(self) -> "OEMedChem::OEMCSMolSimScore &":
        """__ref__(OEMCSMolSimScoreIter self) -> OEMCSMolSimScore"""
        return _oemedchem.OEMCSMolSimScoreIter___ref__(self)


    def IsValid(self):
      return _oemedchem.OEMCSMolSimScoreIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMCSMolSimScoreIter self) -> PyObject *"""
        return _oemedchem.OEMCSMolSimScoreIter_next(self)


    def Target(self) -> "OEMedChem::OEMCSMolSimScore &":
        """Target(OEMCSMolSimScoreIter self) -> OEMCSMolSimScore"""
        return _oemedchem.OEMCSMolSimScoreIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMedChem::OEMCSMolSimScore > &":
        """
        Next(OEMCSMolSimScoreIter self) -> OEMCSMolSimScoreIter
        Next(OEMCSMolSimScoreIter self, int i) -> OEMCSMolSimScoreIter
        """
        return _oemedchem.OEMCSMolSimScoreIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMedChem::OEMCSMolSimScore > &":
        """
        Prev(OEMCSMolSimScoreIter self) -> OEMCSMolSimScoreIter
        Prev(OEMCSMolSimScoreIter self, int i) -> OEMCSMolSimScoreIter
        """
        return _oemedchem.OEMCSMolSimScoreIter_Prev(self, *args)

OEMCSMolSimScoreIter_swigregister = _oemedchem.OEMCSMolSimScoreIter_swigregister
OEMCSMolSimScoreIter_swigregister(OEMCSMolSimScoreIter)


def GetSWIG_NewPointerObj(*args) -> "PyObject *":
    """
    GetSWIG_NewPointerObj(arg, owned) -> 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 & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERotamer arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETorsion arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColor arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColorStop arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEGroupBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAtomBondSet arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESubSearch arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHintTypeBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierFragment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierChain arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEPlaceHydrogensMoverNote arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAnnotation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFuzzy arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEMCSMolSimScore arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEMatchedPairTransform arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEMatchedPair arg, bool owned) -> PyObject *
    """
    return _oemedchem.GetSWIG_NewPointerObj(*args)

def OEMCSFragDatabaseCoreQuery(bytes: 'PyObject *') -> "PyObject *":
    """OEMCSFragDatabaseCoreQuery(PyObject * bytes) -> PyObject *"""
    return _oemedchem.OEMCSFragDatabaseCoreQuery(bytes)
class OEMatchedPair(object):
    """Proxy of C++ OEMedChem::OEMatchedPair class."""

    thisown = _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__(OEMedChem::OEMatchedPair self, OEMatchedPair rhs) -> OEMatchedPair
        __init__(OEMedChem::OEMatchedPair self, unsigned int fromIndex=0, unsigned int toIndex=0, char const * fromSmiles=None, char const * toSmiles=None) -> OEMatchedPair
        __init__(OEMedChem::OEMatchedPair self, unsigned int fromIndex=0, unsigned int toIndex=0, char const * fromSmiles=None) -> OEMatchedPair
        __init__(OEMedChem::OEMatchedPair self, unsigned int fromIndex=0, unsigned int toIndex=0) -> OEMatchedPair
        __init__(OEMedChem::OEMatchedPair self, unsigned int fromIndex=0) -> OEMatchedPair
        __init__(OEMedChem::OEMatchedPair self) -> OEMatchedPair
        """
        this = _oemedchem.new_OEMatchedPair(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPair
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEMedChem::OEMatchedPair *":
        """CreateCopy(OEMatchedPair self) -> OEMatchedPair"""
        return _oemedchem.OEMatchedPair_CreateCopy(self)


    def FromIndex(self) -> "unsigned int":
        """FromIndex(OEMatchedPair self) -> unsigned int"""
        return _oemedchem.OEMatchedPair_FromIndex(self)


    def FromSmiles(self) -> "std::string const &":
        """FromSmiles(OEMatchedPair self) -> std::string const &"""
        return _oemedchem.OEMatchedPair_FromSmiles(self)


    def ToIndex(self) -> "unsigned int":
        """ToIndex(OEMatchedPair self) -> unsigned int"""
        return _oemedchem.OEMatchedPair_ToIndex(self)


    def ToSmiles(self) -> "std::string const &":
        """ToSmiles(OEMatchedPair self) -> std::string const &"""
        return _oemedchem.OEMatchedPair_ToSmiles(self)


    def NumDataTags(self) -> "unsigned int":
        """NumDataTags(OEMatchedPair self) -> unsigned int"""
        return _oemedchem.OEMatchedPair_NumDataTags(self)


    def GetDataTags(self) -> "OESystem::OEIterBase< std::string const > *":
        """GetDataTags(OEMatchedPair self) -> OESystem::OEIterBase< std::string const > *"""
        return _oemedchem.OEMatchedPair_GetDataTags(self)


    def ClearSDData(self) -> "void":
        """ClearSDData(OEMatchedPair self)"""
        return _oemedchem.OEMatchedPair_ClearSDData(self)


    def HasSDData(self, tag: 'std::string const &') -> "bool":
        """HasSDData(OEMatchedPair self, std::string const & tag) -> bool"""
        return _oemedchem.OEMatchedPair_HasSDData(self, tag)


    def GetFromSDData(self, tag: 'std::string const &') -> "std::string":
        """GetFromSDData(OEMatchedPair self, std::string const & tag) -> std::string"""
        return _oemedchem.OEMatchedPair_GetFromSDData(self, tag)


    def GetToSDData(self, tag: 'std::string const &') -> "std::string":
        """GetToSDData(OEMatchedPair self, std::string const & tag) -> std::string"""
        return _oemedchem.OEMatchedPair_GetToSDData(self, tag)


    def AddSDData(self, tag: 'std::string const &', fromValue: 'std::string const &', toValue: 'std::string const &') -> "bool":
        """AddSDData(OEMatchedPair self, std::string const & tag, std::string const & fromValue, std::string const & toValue) -> bool"""
        return _oemedchem.OEMatchedPair_AddSDData(self, tag, fromValue, toValue)

OEMatchedPair_swigregister = _oemedchem.OEMatchedPair_swigregister
OEMatchedPair_swigregister(OEMatchedPair)

class OEMatchedPairTransform(object):
    """Proxy of C++ OEMedChem::OEMatchedPairTransform class."""

    thisown = _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__(OEMedChem::OEMatchedPairTransform self) -> OEMatchedPairTransform
        __init__(OEMedChem::OEMatchedPairTransform self, std::string const & xformstr, int context) -> OEMatchedPairTransform
        __init__(OEMedChem::OEMatchedPairTransform self, std::string const & xformstr) -> OEMatchedPairTransform
        __init__(OEMedChem::OEMatchedPairTransform self, std::string const & ForwardXForm, std::string const & ReverseXForm, int context) -> OEMatchedPairTransform
        __init__(OEMedChem::OEMatchedPairTransform self, std::string const & ForwardXForm, std::string const & ReverseXForm) -> OEMatchedPairTransform
        __init__(OEMedChem::OEMatchedPairTransform self, OEMatchedPairTransform rhs) -> OEMatchedPairTransform
        """
        this = _oemedchem.new_OEMatchedPairTransform(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPairTransform
    __del__ = lambda self: None

    def CreateCopy(self) -> "OEMedChem::OEMatchedPairTransform *":
        """CreateCopy(OEMatchedPairTransform self) -> OEMatchedPairTransform"""
        return _oemedchem.OEMatchedPairTransform_CreateCopy(self)


    def GetMatchedPairContext(self) -> "int":
        """GetMatchedPairContext(OEMatchedPairTransform self) -> int"""
        return _oemedchem.OEMatchedPairTransform_GetMatchedPairContext(self)


    def GetTransform(self) -> "std::string const &":
        """GetTransform(OEMatchedPairTransform self) -> std::string const &"""
        return _oemedchem.OEMatchedPairTransform_GetTransform(self)


    def SetTransform(self, *args) -> "bool":
        """
        SetTransform(OEMatchedPairTransform self, std::string const & xform, int context) -> bool
        SetTransform(OEMatchedPairTransform self, std::string const & xform) -> bool
        SetTransform(OEMatchedPairTransform self, std::string const & ForwardXForm, std::string const & ReverseXForm, int context) -> bool
        SetTransform(OEMatchedPairTransform self, std::string const & ForwardXForm, std::string const & ReverseXForm) -> bool
        """
        return _oemedchem.OEMatchedPairTransform_SetTransform(self, *args)


    def NumMatchedPairs(self) -> "unsigned int":
        """NumMatchedPairs(OEMatchedPairTransform self) -> unsigned int"""
        return _oemedchem.OEMatchedPairTransform_NumMatchedPairs(self)


    def GetMatchedPairs(self, *args) -> "OESystem::OEIterBase< OEMedChem::OEMatchedPair > *":
        """
        GetMatchedPairs(OEMatchedPairTransform self) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair >
        GetMatchedPairs(OEMatchedPairTransform self, unsigned int FromOrToIndex) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair >
        GetMatchedPairs(OEMatchedPairTransform self, unsigned int fromIndex, unsigned int toIndex) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair > *
        """
        return _oemedchem.OEMatchedPairTransform_GetMatchedPairs(self, *args)


    def Invert(self) -> "bool":
        """Invert(OEMatchedPairTransform self) -> bool"""
        return _oemedchem.OEMatchedPairTransform_Invert(self)


    def HasMatchedPair(self, *args) -> "bool":
        """
        HasMatchedPair(OEMatchedPairTransform self, unsigned int FromOrToIndex) -> bool
        HasMatchedPair(OEMatchedPairTransform self, unsigned int fromIndex, unsigned int toIndex) -> bool
        """
        return _oemedchem.OEMatchedPairTransform_HasMatchedPair(self, *args)


    def AddMatchedPair(self, *args) -> "bool":
        """
        AddMatchedPair(OEMatchedPairTransform self, OEMatchedPair molpair) -> bool
        AddMatchedPair(OEMatchedPairTransform self, unsigned int fromIndex, std::string const & fromSmiles, unsigned int toIndex, std::string const & toSmiles) -> bool
        """
        return _oemedchem.OEMatchedPairTransform_AddMatchedPair(self, *args)


    def GetMolecule(self, molindex: 'unsigned int') -> "std::string":
        """GetMolecule(OEMatchedPairTransform self, unsigned int molindex) -> std::string"""
        return _oemedchem.OEMatchedPairTransform_GetMolecule(self, molindex)


    def GetMoleculeTitle(self, molindex: 'unsigned int') -> "std::string":
        """GetMoleculeTitle(OEMatchedPairTransform self, unsigned int molindex) -> std::string"""
        return _oemedchem.OEMatchedPairTransform_GetMoleculeTitle(self, molindex)


    def SetMoleculeTitle(self, molindex: 'unsigned int', name: 'std::string const &') -> "bool":
        """SetMoleculeTitle(OEMatchedPairTransform self, unsigned int molindex, std::string const & name) -> bool"""
        return _oemedchem.OEMatchedPairTransform_SetMoleculeTitle(self, molindex, name)


    def GetImpl(self, *args) -> "OEMedChem::OEMatchedPairTransformImpl *":
        """
        GetImpl(OEMatchedPairTransform self) -> OEMedChem::OEMatchedPairTransformImpl const
        GetImpl(OEMatchedPairTransform self) -> OEMedChem::OEMatchedPairTransformImpl *
        """
        return _oemedchem.OEMatchedPairTransform_GetImpl(self, *args)

OEMatchedPairTransform_swigregister = _oemedchem.OEMatchedPairTransform_swigregister
OEMatchedPairTransform_swigregister(OEMatchedPairTransform)


def OEMatchedPairGetTransforms(*args) -> "OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform > *":
    """
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, int context, unsigned int extractMode) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, int context) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, int context, unsigned int extractMode) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, int context) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, OEMatchedPairAnalyzerOptions fragOpts, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, OEMatchedPairAnalyzerOptions fragOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, OEAtomBondSet probesubst, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, OEAtomBondSet probesubst) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, char const * probesubstDataField, OEMatchedPairTransformExtractOptions extractOpts) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform >
    OEMatchedPairGetTransforms(OEMatchedPairAnalyzer mmpindex, OEMolBase probemol, char const * probesubstDataField) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform > *
    """
    return _oemedchem.OEMatchedPairGetTransforms(*args)
class OEMatchedPairTransformIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMedChem::OEMatchedPairTransform)> class."""

    thisown = _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<(OEMedChem::OEMatchedPairTransform)> self) -> OEMatchedPairTransformIter
        __init__(OESystem::OEIter<(OEMedChem::OEMatchedPairTransform)> self, OEMatchedPairTransformIter rhs) -> OEMatchedPairTransformIter
        __init__(OESystem::OEIter<(OEMedChem::OEMatchedPairTransform)> self, OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform > * rhs) -> OEMatchedPairTransformIter
        __init__(OESystem::OEIter<(OEMedChem::OEMatchedPairTransform)> self, OESystem::OEIterBase< OESystem::OEIter< OEMedChem::OEMatchedPairTransform >::NonConstA > * rhs) -> OEMatchedPairTransformIter
        """
        this = _oemedchem.new_OEMatchedPairTransformIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPairTransformIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform > *":
        """Copy(OEMatchedPairTransformIter self) -> OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform > *"""
        return _oemedchem.OEMatchedPairTransformIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchedPairTransformIter self, OESystem::OEIterBase< OEMedChem::OEMatchedPairTransform > * ib)
        Push(OEMatchedPairTransformIter self, OEMatchedPairTransformIter iter)
        """
        return _oemedchem.OEMatchedPairTransformIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMedChem::OEMatchedPairTransform,OEMedChem::OEMatchedPairTransform > const &') -> "void":
        """Sort(OEMatchedPairTransformIter self, OESystem::OEBinaryPredicate< OEMedChem::OEMatchedPairTransform,OEMedChem::OEMatchedPairTransform > const & sort_criterion)"""
        return _oemedchem.OEMatchedPairTransformIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMedChem::OEMatchedPairTransform > &":
        """ToFirst(OEMatchedPairTransformIter self) -> OEMatchedPairTransformIter"""
        return _oemedchem.OEMatchedPairTransformIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMedChem::OEMatchedPairTransform > &":
        """ToLast(OEMatchedPairTransformIter self) -> OEMatchedPairTransformIter"""
        return _oemedchem.OEMatchedPairTransformIter_ToLast(self)


    def __ref__(self) -> "OEMedChem::OEMatchedPairTransform &":
        """__ref__(OEMatchedPairTransformIter self) -> OEMatchedPairTransform"""
        return _oemedchem.OEMatchedPairTransformIter___ref__(self)


    def IsValid(self):
      return _oemedchem.OEMatchedPairTransformIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchedPairTransformIter self) -> PyObject *"""
        return _oemedchem.OEMatchedPairTransformIter_next(self)


    def Target(self) -> "OEMedChem::OEMatchedPairTransform &":
        """Target(OEMatchedPairTransformIter self) -> OEMatchedPairTransform"""
        return _oemedchem.OEMatchedPairTransformIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMedChem::OEMatchedPairTransform > &":
        """
        Next(OEMatchedPairTransformIter self) -> OEMatchedPairTransformIter
        Next(OEMatchedPairTransformIter self, int i) -> OEMatchedPairTransformIter
        """
        return _oemedchem.OEMatchedPairTransformIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMedChem::OEMatchedPairTransform > &":
        """
        Prev(OEMatchedPairTransformIter self) -> OEMatchedPairTransformIter
        Prev(OEMatchedPairTransformIter self, int i) -> OEMatchedPairTransformIter
        """
        return _oemedchem.OEMatchedPairTransformIter_Prev(self, *args)

OEMatchedPairTransformIter_swigregister = _oemedchem.OEMatchedPairTransformIter_swigregister
OEMatchedPairTransformIter_swigregister(OEMatchedPairTransformIter)

class OEMatchedPairIter(object):
    """Proxy of C++ OESystem::OEIter<(OEMedChem::OEMatchedPair)> class."""

    thisown = _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<(OEMedChem::OEMatchedPair)> self) -> OEMatchedPairIter
        __init__(OESystem::OEIter<(OEMedChem::OEMatchedPair)> self, OEMatchedPairIter rhs) -> OEMatchedPairIter
        __init__(OESystem::OEIter<(OEMedChem::OEMatchedPair)> self, OESystem::OEIterBase< OEMedChem::OEMatchedPair > * rhs) -> OEMatchedPairIter
        __init__(OESystem::OEIter<(OEMedChem::OEMatchedPair)> self, OESystem::OEIterBase< OESystem::OEIter< OEMedChem::OEMatchedPair >::NonConstA > * rhs) -> OEMatchedPairIter
        """
        this = _oemedchem.new_OEMatchedPairIter(*args)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OEMatchedPairIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEMedChem::OEMatchedPair > *":
        """Copy(OEMatchedPairIter self) -> OESystem::OEIterBase< OEMedChem::OEMatchedPair > *"""
        return _oemedchem.OEMatchedPairIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEMatchedPairIter self, OESystem::OEIterBase< OEMedChem::OEMatchedPair > * ib)
        Push(OEMatchedPairIter self, OEMatchedPairIter iter)
        """
        return _oemedchem.OEMatchedPairIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEMedChem::OEMatchedPair,OEMedChem::OEMatchedPair > const &') -> "void":
        """Sort(OEMatchedPairIter self, OESystem::OEBinaryPredicate< OEMedChem::OEMatchedPair,OEMedChem::OEMatchedPair > const & sort_criterion)"""
        return _oemedchem.OEMatchedPairIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEMedChem::OEMatchedPair > &":
        """ToFirst(OEMatchedPairIter self) -> OEMatchedPairIter"""
        return _oemedchem.OEMatchedPairIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEMedChem::OEMatchedPair > &":
        """ToLast(OEMatchedPairIter self) -> OEMatchedPairIter"""
        return _oemedchem.OEMatchedPairIter_ToLast(self)


    def __ref__(self) -> "OEMedChem::OEMatchedPair &":
        """__ref__(OEMatchedPairIter self) -> OEMatchedPair"""
        return _oemedchem.OEMatchedPairIter___ref__(self)


    def IsValid(self):
      return _oemedchem.OEMatchedPairIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEMatchedPairIter self) -> PyObject *"""
        return _oemedchem.OEMatchedPairIter_next(self)


    def Target(self) -> "OEMedChem::OEMatchedPair &":
        """Target(OEMatchedPairIter self) -> OEMatchedPair"""
        return _oemedchem.OEMatchedPairIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEMedChem::OEMatchedPair > &":
        """
        Next(OEMatchedPairIter self) -> OEMatchedPairIter
        Next(OEMatchedPairIter self, int i) -> OEMatchedPairIter
        """
        return _oemedchem.OEMatchedPairIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEMedChem::OEMatchedPair > &":
        """
        Prev(OEMatchedPairIter self) -> OEMatchedPairIter
        Prev(OEMatchedPairIter self, int i) -> OEMatchedPairIter
        """
        return _oemedchem.OEMatchedPairIter_Prev(self, *args)

OEMatchedPairIter_swigregister = _oemedchem.OEMatchedPairIter_swigregister
OEMatchedPairIter_swigregister(OEMatchedPairIter)


def OEGetRegionTypeName(regionType: 'unsigned int') -> "char const *":
    """OEGetRegionTypeName(unsigned int regionType) -> char const *"""
    return _oemedchem.OEGetRegionTypeName(regionType)

def OEGetRegionType(regionName: 'std::string const &') -> "unsigned int":
    """OEGetRegionType(std::string const & regionName) -> unsigned int"""
    return _oemedchem.OEGetRegionType(regionName)

def OEGetBemisMurcko(*args) -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
    """
    OEGetBemisMurcko(OEMolBase mol, unsigned int perceivetype) -> OESystem::OEIterBase< OEChem::OEAtomBondSet >
    OEGetBemisMurcko(OEMolBase mol) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *
    """
    return _oemedchem.OEGetBemisMurcko(*args)

def OEConfigureMatchedPairIndexOptions(*args) -> "bool":
    """
    OEConfigureMatchedPairIndexOptions(OEInterface itf, unsigned int config) -> bool
    OEConfigureMatchedPairIndexOptions(OEInterface itf) -> bool
    """
    return _oemedchem.OEConfigureMatchedPairIndexOptions(*args)

def OESetupMatchedPairIndexOptions(arg1: 'OEMatchedPairAnalyzerOptions', itf: 'OEInterface') -> "bool":
    """OESetupMatchedPairIndexOptions(OEMatchedPairAnalyzerOptions arg1, OEInterface itf) -> bool"""
    return _oemedchem.OESetupMatchedPairIndexOptions(arg1, itf)

def OEConfigureMCSFragDatabaseOptions(*args) -> "bool":
    """
    OEConfigureMCSFragDatabaseOptions(OEInterface itf, unsigned int config) -> bool
    OEConfigureMCSFragDatabaseOptions(OEInterface itf) -> bool
    """
    return _oemedchem.OEConfigureMCSFragDatabaseOptions(*args)

def OESetupMCSFragDatabaseOptions(arg1: 'OEMCSFragDatabaseOptions', itf: 'OEInterface') -> "bool":
    """OESetupMCSFragDatabaseOptions(OEMCSFragDatabaseOptions arg1, OEInterface itf) -> bool"""
    return _oemedchem.OESetupMCSFragDatabaseOptions(arg1, itf)
class OECreateMMPIndexOptions(object):
    """Proxy of C++ OEMedChem::OECreateMMPIndexOptions class."""

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

    def __init__(self, mmpopts: 'OEMatchedPairAnalyzerOptions'):
        """__init__(OEMedChem::OECreateMMPIndexOptions self, OEMatchedPairAnalyzerOptions mmpopts) -> OECreateMMPIndexOptions"""
        this = _oemedchem.new_OECreateMMPIndexOptions(mmpopts)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OECreateMMPIndexOptions
    __del__ = lambda self: None

    def GetMMPOptions(self) -> "OEMedChem::OEMatchedPairAnalyzerOptions const &":
        """GetMMPOptions(OECreateMMPIndexOptions self) -> OEMatchedPairAnalyzerOptions"""
        return _oemedchem.OECreateMMPIndexOptions_GetMMPOptions(self)


    def SetNumThreads(self, nthreads: 'unsigned int') -> "void":
        """SetNumThreads(OECreateMMPIndexOptions self, unsigned int nthreads)"""
        return _oemedchem.OECreateMMPIndexOptions_SetNumThreads(self, nthreads)


    def GetNumThreads(self) -> "unsigned int":
        """GetNumThreads(OECreateMMPIndexOptions self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexOptions_GetNumThreads(self)


    def SetVerbose(self, verbose: 'unsigned int') -> "void":
        """SetVerbose(OECreateMMPIndexOptions self, unsigned int verbose)"""
        return _oemedchem.OECreateMMPIndexOptions_SetVerbose(self, verbose)


    def GetVerbose(self) -> "unsigned int":
        """GetVerbose(OECreateMMPIndexOptions self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexOptions_GetVerbose(self)


    def SetMaxRecord(self, maxrec: 'unsigned int') -> "void":
        """SetMaxRecord(OECreateMMPIndexOptions self, unsigned int maxrec)"""
        return _oemedchem.OECreateMMPIndexOptions_SetMaxRecord(self, maxrec)


    def GetMaxRecord(self) -> "unsigned int":
        """GetMaxRecord(OECreateMMPIndexOptions self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexOptions_GetMaxRecord(self)


    def SetTracer(self, dots: 'OEDots') -> "void":
        """SetTracer(OECreateMMPIndexOptions self, OEDots dots)"""
        return _oemedchem.OECreateMMPIndexOptions_SetTracer(self, dots)


    def GetTracer(self) -> "OESystem::OEDots const *":
        """GetTracer(OECreateMMPIndexOptions self) -> OEDots"""
        return _oemedchem.OECreateMMPIndexOptions_GetTracer(self)

OECreateMMPIndexOptions_swigregister = _oemedchem.OECreateMMPIndexOptions_swigregister
OECreateMMPIndexOptions_swigregister(OECreateMMPIndexOptions)
cvar = _oemedchem.cvar
BondFragLimit = cvar.BondFragLimit
HeavyAtomLimit = cvar.HeavyAtomLimit
FragMinMaxRange = cvar.FragMinMaxRange
FragmentationCuts = cvar.FragmentationCuts
IndexHydrogenSites = cvar.IndexHydrogenSites
AllFrags = cvar.AllFrags
FragCutsRange = cvar.FragCutsRange
RingCuts = cvar.RingCuts
All = cvar.All

class OECreateMMPIndexStatus(object):
    """Proxy of C++ OEMedChem::OECreateMMPIndexStatus class."""

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

    def __init__(self, valid: 'bool'=True):
        """
        __init__(OEMedChem::OECreateMMPIndexStatus self, bool valid=True) -> OECreateMMPIndexStatus
        __init__(OEMedChem::OECreateMMPIndexStatus self) -> OECreateMMPIndexStatus
        """
        this = _oemedchem.new_OECreateMMPIndexStatus(valid)
        try:
            self.this.append(this)
        except __builtin__.Exception:
            self.this = this
    __swig_destroy__ = _oemedchem.delete_OECreateMMPIndexStatus
    __del__ = lambda self: None

    def __iadd__(self, rhs: 'OECreateMMPIndexStatus') -> "OEMedChem::OECreateMMPIndexStatus &":
        """__iadd__(OECreateMMPIndexStatus self, OECreateMMPIndexStatus rhs) -> OECreateMMPIndexStatus"""
        return _oemedchem.OECreateMMPIndexStatus___iadd__(self, rhs)


    def SetValid(self, valid: 'bool') -> "void":
        """SetValid(OECreateMMPIndexStatus self, bool valid)"""
        return _oemedchem.OECreateMMPIndexStatus_SetValid(self, valid)


    def IsValid(self) -> "bool":
        """IsValid(OECreateMMPIndexStatus self) -> bool"""
        return _oemedchem.OECreateMMPIndexStatus_IsValid(self)


    def AddUnindexedMol(self) -> "unsigned int":
        """AddUnindexedMol(OECreateMMPIndexStatus self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexStatus_AddUnindexedMol(self)


    def SetUnindexedMols(self, unindexed: 'unsigned int') -> "void":
        """SetUnindexedMols(OECreateMMPIndexStatus self, unsigned int unindexed)"""
        return _oemedchem.OECreateMMPIndexStatus_SetUnindexedMols(self, unindexed)


    def GetUnindexedMols(self) -> "unsigned int":
        """GetUnindexedMols(OECreateMMPIndexStatus self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexStatus_GetUnindexedMols(self)


    def AddIndexedMol(self) -> "unsigned int":
        """AddIndexedMol(OECreateMMPIndexStatus self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexStatus_AddIndexedMol(self)


    def SetNumMols(self, nummols: 'unsigned int') -> "void":
        """SetNumMols(OECreateMMPIndexStatus self, unsigned int nummols)"""
        return _oemedchem.OECreateMMPIndexStatus_SetNumMols(self, nummols)


    def GetNumMols(self) -> "unsigned int":
        """GetNumMols(OECreateMMPIndexStatus self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexStatus_GetNumMols(self)


    def GetTotalMols(self) -> "unsigned int":
        """GetTotalMols(OECreateMMPIndexStatus self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexStatus_GetTotalMols(self)


    def SetNumMatchedPairs(self, nummmps: 'unsigned int') -> "void":
        """SetNumMatchedPairs(OECreateMMPIndexStatus self, unsigned int nummmps)"""
        return _oemedchem.OECreateMMPIndexStatus_SetNumMatchedPairs(self, nummmps)


    def GetNumMatchedPairs(self) -> "unsigned int":
        """GetNumMatchedPairs(OECreateMMPIndexStatus self) -> unsigned int"""
        return _oemedchem.OECreateMMPIndexStatus_GetNumMatchedPairs(self)

OECreateMMPIndexStatus_swigregister = _oemedchem.OECreateMMPIndexStatus_swigregister
OECreateMMPIndexStatus_swigregister(OECreateMMPIndexStatus)


def OECreateMMPIndexFile(mmpdbfname: 'std::string const &', molfname: 'std::string const &', opts: 'OECreateMMPIndexOptions') -> "OEMedChem::OECreateMMPIndexStatus":
    """OECreateMMPIndexFile(std::string const & mmpdbfname, std::string const & molfname, OECreateMMPIndexOptions opts) -> OECreateMMPIndexStatus"""
    return _oemedchem.OECreateMMPIndexFile(mmpdbfname, molfname, opts)

def OEMCSFragToMCSCore(mcsfragxform: 'std::string const &', mcsxform: 'std::string &') -> "bool":
    """OEMCSFragToMCSCore(std::string const & mcsfragxform, std::string & mcsxform) -> bool"""
    return _oemedchem.OEMCSFragToMCSCore(mcsfragxform, mcsxform)
OE_OEMEDCHEM_VERSION = _oemedchem.OE_OEMEDCHEM_VERSION

def OEMedChemGetRelease() -> "char const *":
    """OEMedChemGetRelease() -> char const *"""
    return _oemedchem.OEMedChemGetRelease()

def OEMedChemGetVersion() -> "unsigned int":
    """OEMedChemGetVersion() -> unsigned int"""
    return _oemedchem.OEMedChemGetVersion()

def OEMedChemGetArch() -> "char const *":
    """OEMedChemGetArch() -> char const *"""
    return _oemedchem.OEMedChemGetArch()

def OEMedChemGetPlatform() -> "char const *":
    """OEMedChemGetPlatform() -> char const *"""
    return _oemedchem.OEMedChemGetPlatform()

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

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

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


