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


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





from sys import version_info

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

        import sys
        assert not sys.platform.startswith('win')
        
        _oegraphsim = libs.OEGetModule('_oegraphsim241')
        return _oegraphsim

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


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


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


def _swig_getattr_nondynamic(self, class_type, name, static=1):
    if (name == "thisown"):
        return self.this.own()
    method = class_type.__swig_getmethods__.get(name, None)
    if method:
        return method(self)
    if (not static):
        return object.__getattr__(self, name)
    else:
        raise AttributeError(name)

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


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

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



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


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


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

    def __init__(self, *args):
        this = _oegraphsim.new_OEUCharArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

    def __setitem__(self, *args) -> "void":
        return _oegraphsim.OEUCharArray___setitem__(self, *args)

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

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



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

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

    def __len__(self) -> "Py_ssize_t":
        return _oegraphsim.OEUCharArray___len__(self)
OEUCharArray_swigregister = _oegraphsim.OEUCharArray_swigregister
OEUCharArray_swigregister(OEUCharArray)

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

    def __init__(self, *args):
        this = _oegraphsim.new_OEUIntArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

    def __setitem__(self, *args) -> "void":
        return _oegraphsim.OEUIntArray___setitem__(self, *args)

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

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



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

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

    def __len__(self) -> "Py_ssize_t":
        return _oegraphsim.OEUIntArray___len__(self)
OEUIntArray_swigregister = _oegraphsim.OEUIntArray_swigregister
OEUIntArray_swigregister(OEUIntArray)

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

    def __init__(self, *args):
        this = _oegraphsim.new_OEIntArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

    def __setitem__(self, *args) -> "void":
        return _oegraphsim.OEIntArray___setitem__(self, *args)

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

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



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

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

    def __len__(self) -> "Py_ssize_t":
        return _oegraphsim.OEIntArray___len__(self)
OEIntArray_swigregister = _oegraphsim.OEIntArray_swigregister
OEIntArray_swigregister(OEIntArray)

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

    def __init__(self, *args):
        this = _oegraphsim.new_OEFloatArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

    def __setitem__(self, *args) -> "void":
        return _oegraphsim.OEFloatArray___setitem__(self, *args)

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

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



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

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

    def __len__(self) -> "Py_ssize_t":
        return _oegraphsim.OEFloatArray___len__(self)
OEFloatArray_swigregister = _oegraphsim.OEFloatArray_swigregister
OEFloatArray_swigregister(OEFloatArray)

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

    def __init__(self, *args):
        this = _oegraphsim.new_OEDoubleArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

    def __setitem__(self, *args) -> "void":
        return _oegraphsim.OEDoubleArray___setitem__(self, *args)

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

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



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

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

    def __len__(self) -> "Py_ssize_t":
        return _oegraphsim.OEDoubleArray___len__(self)
OEDoubleArray_swigregister = _oegraphsim.OEDoubleArray_swigregister
OEDoubleArray_swigregister(OEDoubleArray)

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

    def __init__(self, *args):
        this = _oegraphsim.new_OEBoolArray(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

    def __setitem__(self, *args) -> "void":
        return _oegraphsim.OEBoolArray___setitem__(self, *args)

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

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



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

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

    def __len__(self) -> "Py_ssize_t":
        return _oegraphsim.OEBoolArray___len__(self)
OEBoolArray_swigregister = _oegraphsim.OEBoolArray_swigregister
OEBoolArray_swigregister(OEBoolArray)

class OEUIntVector(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 = _oegraphsim.new_OEUIntVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OEUIntVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OEUIntVector
    __del__ = lambda self: None
OEUIntVector_swigregister = _oegraphsim.OEUIntVector_swigregister
OEUIntVector_swigregister(OEUIntVector)

class OEIntVector(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 = _oegraphsim.new_OEIntVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OEIntVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OEIntVector
    __del__ = lambda self: None
OEIntVector_swigregister = _oegraphsim.OEIntVector_swigregister
OEIntVector_swigregister(OEIntVector)

class OELongVector(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 = _oegraphsim.new_OELongVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OELongVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OELongVector
    __del__ = lambda self: None
OELongVector_swigregister = _oegraphsim.OELongVector_swigregister
OELongVector_swigregister(OELongVector)

class OECharVector(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 = _oegraphsim.new_OECharVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OECharVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OECharVector
    __del__ = lambda self: None
OECharVector_swigregister = _oegraphsim.OECharVector_swigregister
OECharVector_swigregister(OECharVector)

class OEUCharVector(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 = _oegraphsim.new_OEUCharVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OEUCharVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OEUCharVector
    __del__ = lambda self: None
OEUCharVector_swigregister = _oegraphsim.OEUCharVector_swigregister
OEUCharVector_swigregister(OEUCharVector)

class OEFloatVector(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 = _oegraphsim.new_OEFloatVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OEFloatVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OEFloatVector
    __del__ = lambda self: None
OEFloatVector_swigregister = _oegraphsim.OEFloatVector_swigregister
OEFloatVector_swigregister(OEFloatVector)

class OEDoubleVector(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 = _oegraphsim.new_OEDoubleVector(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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

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

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

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

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

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

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

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

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

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

    def __delslice__(self, i: 'int', j: 'int') -> "void":
        return _oegraphsim.OEDoubleVector___delslice__(self, i, j)
    __swig_destroy__ = _oegraphsim.delete_OEDoubleVector
    __del__ = lambda self: None
OEDoubleVector_swigregister = _oegraphsim.OEDoubleVector_swigregister
OEDoubleVector_swigregister(OEDoubleVector)


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

def TypeToPyString(type: 'void const *') -> "PyObject *":
    return _oegraphsim.TypeToPyString(type)
TypeToPyString = _oegraphsim.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 = _oegraphsim.new_OEInternalFunctionPointer(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

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


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

def __no_op(*args) -> "void":
    return _oegraphsim.__no_op(*args)
__no_op = _oegraphsim.__no_op
import openeye.oechem as oechem

_oegraphsim.OEFPDatabaseOptionsSetup_Limit_swigconstant(_oegraphsim)
OEFPDatabaseOptionsSetup_Limit = _oegraphsim.OEFPDatabaseOptionsSetup_Limit

_oegraphsim.OEFPDatabaseOptionsSetup_SimFunc_swigconstant(_oegraphsim)
OEFPDatabaseOptionsSetup_SimFunc = _oegraphsim.OEFPDatabaseOptionsSetup_SimFunc

_oegraphsim.OEFPDatabaseOptionsSetup_Cutoff_swigconstant(_oegraphsim)
OEFPDatabaseOptionsSetup_Cutoff = _oegraphsim.OEFPDatabaseOptionsSetup_Cutoff

_oegraphsim.OEFPDatabaseOptionsSetup_DescendingOrder_swigconstant(_oegraphsim)
OEFPDatabaseOptionsSetup_DescendingOrder = _oegraphsim.OEFPDatabaseOptionsSetup_DescendingOrder

_oegraphsim.OEFPDatabaseOptionsSetup_All_swigconstant(_oegraphsim)
OEFPDatabaseOptionsSetup_All = _oegraphsim.OEFPDatabaseOptionsSetup_All

_oegraphsim.OEFPAtomType_None_swigconstant(_oegraphsim)
OEFPAtomType_None = _oegraphsim.OEFPAtomType_None

_oegraphsim.OEFPAtomType_All_swigconstant(_oegraphsim)
OEFPAtomType_All = _oegraphsim.OEFPAtomType_All

_oegraphsim.OEFPAtomType_AtomicNumber_swigconstant(_oegraphsim)
OEFPAtomType_AtomicNumber = _oegraphsim.OEFPAtomType_AtomicNumber

_oegraphsim.OEFPAtomType_Aromaticity_swigconstant(_oegraphsim)
OEFPAtomType_Aromaticity = _oegraphsim.OEFPAtomType_Aromaticity

_oegraphsim.OEFPAtomType_Chiral_swigconstant(_oegraphsim)
OEFPAtomType_Chiral = _oegraphsim.OEFPAtomType_Chiral

_oegraphsim.OEFPAtomType_FormalCharge_swigconstant(_oegraphsim)
OEFPAtomType_FormalCharge = _oegraphsim.OEFPAtomType_FormalCharge

_oegraphsim.OEFPAtomType_HvyDegree_swigconstant(_oegraphsim)
OEFPAtomType_HvyDegree = _oegraphsim.OEFPAtomType_HvyDegree

_oegraphsim.OEFPAtomType_Hybridization_swigconstant(_oegraphsim)
OEFPAtomType_Hybridization = _oegraphsim.OEFPAtomType_Hybridization

_oegraphsim.OEFPAtomType_InRing_swigconstant(_oegraphsim)
OEFPAtomType_InRing = _oegraphsim.OEFPAtomType_InRing

_oegraphsim.OEFPAtomType_HCount_swigconstant(_oegraphsim)
OEFPAtomType_HCount = _oegraphsim.OEFPAtomType_HCount

_oegraphsim.OEFPAtomType_EqHalogen_swigconstant(_oegraphsim)
OEFPAtomType_EqHalogen = _oegraphsim.OEFPAtomType_EqHalogen

_oegraphsim.OEFPAtomType_EqAromatic_swigconstant(_oegraphsim)
OEFPAtomType_EqAromatic = _oegraphsim.OEFPAtomType_EqAromatic

_oegraphsim.OEFPAtomType_EqHBondAcceptor_swigconstant(_oegraphsim)
OEFPAtomType_EqHBondAcceptor = _oegraphsim.OEFPAtomType_EqHBondAcceptor

_oegraphsim.OEFPAtomType_EqHBondDonor_swigconstant(_oegraphsim)
OEFPAtomType_EqHBondDonor = _oegraphsim.OEFPAtomType_EqHBondDonor

OEFPAtomType_DefaultAtom = OEFPAtomType_AtomicNumber|OEFPAtomType_Aromaticity|OEFPAtomType_Chiral|OEFPAtomType_FormalCharge|OEFPAtomType_HvyDegree|OEFPAtomType_Hybridization|OEFPAtomType_EqHalogen


OEFPAtomType_DefaultPathAtom = OEFPAtomType_AtomicNumber|OEFPAtomType_Aromaticity|OEFPAtomType_Chiral|OEFPAtomType_FormalCharge|OEFPAtomType_HvyDegree|OEFPAtomType_Hybridization|OEFPAtomType_EqHalogen


OEFPAtomType_DefaultCircularAtom = OEFPAtomType_AtomicNumber|OEFPAtomType_Aromaticity|OEFPAtomType_Chiral|OEFPAtomType_FormalCharge|OEFPAtomType_HCount|OEFPAtomType_EqHalogen


OEFPAtomType_DefaultTreeAtom = OEFPAtomType_AtomicNumber|OEFPAtomType_Aromaticity|OEFPAtomType_Chiral|OEFPAtomType_FormalCharge|OEFPAtomType_HvyDegree|OEFPAtomType_Hybridization


_oegraphsim.OEFPBondType_None_swigconstant(_oegraphsim)
OEFPBondType_None = _oegraphsim.OEFPBondType_None

_oegraphsim.OEFPBondType_All_swigconstant(_oegraphsim)
OEFPBondType_All = _oegraphsim.OEFPBondType_All

_oegraphsim.OEFPBondType_BondOrder_swigconstant(_oegraphsim)
OEFPBondType_BondOrder = _oegraphsim.OEFPBondType_BondOrder

_oegraphsim.OEFPBondType_Chiral_swigconstant(_oegraphsim)
OEFPBondType_Chiral = _oegraphsim.OEFPBondType_Chiral

_oegraphsim.OEFPBondType_InRing_swigconstant(_oegraphsim)
OEFPBondType_InRing = _oegraphsim.OEFPBondType_InRing

OEFPBondType_DefaultBond = OEFPBondType_BondOrder|OEFPBondType_Chiral


OEFPBondType_DefaultPathBond = OEFPBondType_BondOrder|OEFPBondType_Chiral


OEFPBondType_DefaultCircularBond = OEFPBondType_BondOrder


OEFPBondType_DefaultTreeBond = OEFPBondType_BondOrder


_oegraphsim.OEPopCountMethod_NoSupport_swigconstant(_oegraphsim)
OEPopCountMethod_NoSupport = _oegraphsim.OEPopCountMethod_NoSupport

_oegraphsim.OEPopCountMethod_BitCount_swigconstant(_oegraphsim)
OEPopCountMethod_BitCount = _oegraphsim.OEPopCountMethod_BitCount

_oegraphsim.OEPopCountMethod_PopCount_swigconstant(_oegraphsim)
OEPopCountMethod_PopCount = _oegraphsim.OEPopCountMethod_PopCount

_oegraphsim.OEFastFPDatabaseMemoryType_MemoryMapped_swigconstant(_oegraphsim)
OEFastFPDatabaseMemoryType_MemoryMapped = _oegraphsim.OEFastFPDatabaseMemoryType_MemoryMapped

_oegraphsim.OEFastFPDatabaseMemoryType_InMemory_swigconstant(_oegraphsim)
OEFastFPDatabaseMemoryType_InMemory = _oegraphsim.OEFastFPDatabaseMemoryType_InMemory

_oegraphsim.OEFastFPDatabaseMemoryType_CUDA_swigconstant(_oegraphsim)
OEFastFPDatabaseMemoryType_CUDA = _oegraphsim.OEFastFPDatabaseMemoryType_CUDA

OEFastFPDatabaseMemoryType_Default = OEFastFPDatabaseMemoryType_MemoryMapped


_oegraphsim.OEFPType_MACCS166_swigconstant(_oegraphsim)
OEFPType_MACCS166 = _oegraphsim.OEFPType_MACCS166

_oegraphsim.OEFPType_Path_swigconstant(_oegraphsim)
OEFPType_Path = _oegraphsim.OEFPType_Path

_oegraphsim.OEFPType_Lingo_swigconstant(_oegraphsim)
OEFPType_Lingo = _oegraphsim.OEFPType_Lingo

_oegraphsim.OEFPType_Circular_swigconstant(_oegraphsim)
OEFPType_Circular = _oegraphsim.OEFPType_Circular

_oegraphsim.OEFPType_Tree_swigconstant(_oegraphsim)
OEFPType_Tree = _oegraphsim.OEFPType_Tree

_oegraphsim.OESimMeasure_Tanimoto_swigconstant(_oegraphsim)
OESimMeasure_Tanimoto = _oegraphsim.OESimMeasure_Tanimoto

_oegraphsim.OESimMeasure_Cosine_swigconstant(_oegraphsim)
OESimMeasure_Cosine = _oegraphsim.OESimMeasure_Cosine

_oegraphsim.OESimMeasure_Dice_swigconstant(_oegraphsim)
OESimMeasure_Dice = _oegraphsim.OESimMeasure_Dice

_oegraphsim.OESimMeasure_Euclid_swigconstant(_oegraphsim)
OESimMeasure_Euclid = _oegraphsim.OESimMeasure_Euclid

_oegraphsim.OESimMeasure_Tversky_swigconstant(_oegraphsim)
OESimMeasure_Tversky = _oegraphsim.OESimMeasure_Tversky

_oegraphsim.OESimMeasure_Manhattan_swigconstant(_oegraphsim)
OESimMeasure_Manhattan = _oegraphsim.OESimMeasure_Manhattan

_oegraphsim.OESimMeasure_Max_swigconstant(_oegraphsim)
OESimMeasure_Max = _oegraphsim.OESimMeasure_Max

OESimMeasure_Default = OESimMeasure_Tanimoto

class OESimScore(object):
    """Proxy of C++ OEGraphSim::OESimScore class."""

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

    def __init__(self, i: 'size_t', s: 'double'):
        """__init__(OEGraphSim::OESimScore self, size_t i, double s) -> OESimScore"""
        this = _oegraphsim.new_OESimScore(i, s)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetIdx(self) -> "size_t":
        """GetIdx(OESimScore self) -> size_t"""
        return _oegraphsim.OESimScore_GetIdx(self)


    def GetScore(self) -> "double":
        """GetScore(OESimScore self) -> double"""
        return _oegraphsim.OESimScore_GetScore(self)

    _idx = _swig_property(_oegraphsim.OESimScore__idx_get, _oegraphsim.OESimScore__idx_set)
    _score = _swig_property(_oegraphsim.OESimScore__score_get, _oegraphsim.OESimScore__score_set)
    __swig_destroy__ = _oegraphsim.delete_OESimScore
    __del__ = lambda self: None
OESimScore_swigregister = _oegraphsim.OESimScore_swigregister
OESimScore_swigregister(OESimScore)

class OESimScorePair(object):
    """Proxy of C++ OEGraphSim::OESimScorePair class."""

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

    def __init__(self, i: 'size_t', j: 'size_t', s: 'double'):
        """__init__(OEGraphSim::OESimScorePair self, size_t i, size_t j, double s) -> OESimScorePair"""
        this = _oegraphsim.new_OESimScorePair(i, j, s)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetIdxA(self) -> "size_t":
        """GetIdxA(OESimScorePair self) -> size_t"""
        return _oegraphsim.OESimScorePair_GetIdxA(self)


    def GetIdxB(self) -> "size_t":
        """GetIdxB(OESimScorePair self) -> size_t"""
        return _oegraphsim.OESimScorePair_GetIdxB(self)


    def GetScore(self) -> "double":
        """GetScore(OESimScorePair self) -> double"""
        return _oegraphsim.OESimScorePair_GetScore(self)

    _idxA = _swig_property(_oegraphsim.OESimScorePair__idxA_get, _oegraphsim.OESimScorePair__idxA_set)
    _idxB = _swig_property(_oegraphsim.OESimScorePair__idxB_get, _oegraphsim.OESimScorePair__idxB_set)
    _score = _swig_property(_oegraphsim.OESimScorePair__score_get, _oegraphsim.OESimScorePair__score_set)
    __swig_destroy__ = _oegraphsim.delete_OESimScorePair
    __del__ = lambda self: None
OESimScorePair_swigregister = _oegraphsim.OESimScorePair_swigregister
OESimScorePair_swigregister(OESimScorePair)

class OEFPTypeBase(object):
    """Proxy of C++ OEGraphSim::OEFPTypeBase class."""

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

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

    def GetFPType(self) -> "unsigned int":
        """GetFPType(OEFPTypeBase self) -> unsigned int"""
        return _oegraphsim.OEFPTypeBase_GetFPType(self)


    def GetFPTypeString(self) -> "std::string":
        """GetFPTypeString(OEFPTypeBase self) -> std::string"""
        return _oegraphsim.OEFPTypeBase_GetFPTypeString(self)


    def GetFPVersion(self) -> "unsigned short":
        """GetFPVersion(OEFPTypeBase self) -> unsigned short"""
        return _oegraphsim.OEFPTypeBase_GetFPVersion(self)


    def GetFPVersionString(self) -> "std::string":
        """GetFPVersionString(OEFPTypeBase self) -> std::string"""
        return _oegraphsim.OEFPTypeBase_GetFPVersionString(self)


    def __eq__(self, rhs: 'OEFPTypeBase') -> "bool":
        """__eq__(OEFPTypeBase self, OEFPTypeBase rhs) -> bool"""
        return _oegraphsim.OEFPTypeBase___eq__(self, rhs)

OEFPTypeBase_swigregister = _oegraphsim.OEFPTypeBase_swigregister
OEFPTypeBase_swigregister(OEFPTypeBase)

class OEFingerPrint(oechem.OEBitVector):
    """Proxy of C++ OEGraphSim::OEFingerPrint class."""

    thisown = _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__(OEGraphSim::OEFingerPrint self) -> OEFingerPrint
        __init__(OEGraphSim::OEFingerPrint self, OEFingerPrint rhs) -> OEFingerPrint
        """
        this = _oegraphsim.new_OEFingerPrint(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFingerPrint
    __del__ = lambda self: None

    def IsValid(self):
      return _oegraphsim.OEFingerPrint___nonzero__(self)



    def GetFPTypeBase(self) -> "OEGraphSim::OEFPTypeBase const *":
        """GetFPTypeBase(OEFingerPrint self) -> OEFPTypeBase"""
        return _oegraphsim.OEFingerPrint_GetFPTypeBase(self)


    def SetFPTypeBase(self, t: 'OEFPTypeBase') -> "void":
        """SetFPTypeBase(OEFingerPrint self, OEFPTypeBase t)"""
        return _oegraphsim.OEFingerPrint_SetFPTypeBase(self, t)


    def GetDataTypeAsLong(self) -> "PyObject *":
        """GetDataTypeAsLong(OEFingerPrint self) -> PyObject *"""
        return _oegraphsim.OEFingerPrint_GetDataTypeAsLong(self)


    def __cmp__(self, rhs: 'OEFingerPrint') -> "int":
        """__cmp__(OEFingerPrint self, OEFingerPrint rhs) -> int"""
        return _oegraphsim.OEFingerPrint___cmp__(self, rhs)


    def __eq__(self, rhs: 'OEFingerPrint') -> "bool":
        """__eq__(OEFingerPrint self, OEFingerPrint rhs) -> bool"""
        return _oegraphsim.OEFingerPrint___eq__(self, rhs)


    def __ne__(self, rhs: 'OEFingerPrint') -> "bool":
        """__ne__(OEFingerPrint self, OEFingerPrint rhs) -> bool"""
        return _oegraphsim.OEFingerPrint___ne__(self, rhs)

OEFingerPrint_swigregister = _oegraphsim.OEFingerPrint_swigregister
OEFingerPrint_swigregister(OEFingerPrint)


def OEMakeFP(*args) -> "bool":
    """
    OEMakeFP(OEFingerPrint fp, OEMolBase mol, unsigned int fptype) -> bool
    OEMakeFP(OEFingerPrint fp, OEMolBase mol, OEFPTypeBase fptype) -> bool
    """
    return _oegraphsim.OEMakeFP(*args)

def OEMakeMACCS166FP(fp: 'OEFingerPrint', mol: 'OEMolBase') -> "bool":
    """OEMakeMACCS166FP(OEFingerPrint fp, OEMolBase mol) -> bool"""
    return _oegraphsim.OEMakeMACCS166FP(fp, mol)

def OEMakeLingoFP(fp: 'OEFingerPrint', mol: 'OEMolBase') -> "bool":
    """OEMakeLingoFP(OEFingerPrint fp, OEMolBase mol) -> bool"""
    return _oegraphsim.OEMakeLingoFP(fp, mol)

def OEMakePathFP(*args) -> "bool":
    """
    OEMakePathFP(OEFingerPrint fp, OEMolBase mol) -> bool
    OEMakePathFP(OEFingerPrint fp, OEMolBase mol, unsigned int numbits, unsigned int minbonds, unsigned int maxbonds, unsigned int atype, unsigned int btype) -> bool
    """
    return _oegraphsim.OEMakePathFP(*args)

def OEMakeCircularFP(*args) -> "bool":
    """
    OEMakeCircularFP(OEFingerPrint fp, OEMolBase mol) -> bool
    OEMakeCircularFP(OEFingerPrint fp, OEMolBase mol, unsigned int numbits, unsigned int minradius, unsigned int maxradius, unsigned int atype, unsigned int btype) -> bool
    """
    return _oegraphsim.OEMakeCircularFP(*args)

def OEMakeTreeFP(*args) -> "bool":
    """
    OEMakeTreeFP(OEFingerPrint fp, OEMolBase mol) -> bool
    OEMakeTreeFP(OEFingerPrint fp, OEMolBase mol, unsigned int numbits, unsigned int minbonds, unsigned int maxbonds, unsigned int atype, unsigned int btype) -> bool
    """
    return _oegraphsim.OEMakeTreeFP(*args)

def OEIsFPType(fp: 'OEFingerPrint', fptype: 'unsigned int') -> "bool":
    """OEIsFPType(OEFingerPrint fp, unsigned int fptype) -> bool"""
    return _oegraphsim.OEIsFPType(fp, fptype)

def OEIsSameFPType(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "bool":
    """OEIsSameFPType(OEFingerPrint fpA, OEFingerPrint fpB) -> bool"""
    return _oegraphsim.OEIsSameFPType(fpA, fpB)

def OEGetFPType(*args) -> "OEGraphSim::OEFPTypeBase const *":
    """
    OEGetFPType(unsigned int fptype) -> OEFPTypeBase
    OEGetFPType(std::string const & fptypestring) -> OEFPTypeBase
    """
    return _oegraphsim.OEGetFPType(*args)

def OEGetPathFPType(numbits: 'unsigned int', minbonds: 'unsigned int', maxbonds: 'unsigned int', atype: 'unsigned int', btype: 'unsigned int') -> "OEGraphSim::OEFPTypeBase const *":
    """OEGetPathFPType(unsigned int numbits, unsigned int minbonds, unsigned int maxbonds, unsigned int atype, unsigned int btype) -> OEFPTypeBase"""
    return _oegraphsim.OEGetPathFPType(numbits, minbonds, maxbonds, atype, btype)

def OEGetCircularFPType(numbits: 'unsigned int', minradius: 'unsigned int', maxradius: 'unsigned int', atype: 'unsigned int', btype: 'unsigned int') -> "OEGraphSim::OEFPTypeBase const *":
    """OEGetCircularFPType(unsigned int numbits, unsigned int minradius, unsigned int maxradius, unsigned int atype, unsigned int btype) -> OEFPTypeBase"""
    return _oegraphsim.OEGetCircularFPType(numbits, minradius, maxradius, atype, btype)

def OEGetTreeFPType(numbits: 'unsigned int', minbonds: 'unsigned int', maxbonds: 'unsigned int', atype: 'unsigned int', btype: 'unsigned int') -> "OEGraphSim::OEFPTypeBase const *":
    """OEGetTreeFPType(unsigned int numbits, unsigned int minbonds, unsigned int maxbonds, unsigned int atype, unsigned int btype) -> OEFPTypeBase"""
    return _oegraphsim.OEGetTreeFPType(numbits, minbonds, maxbonds, atype, btype)

def OEIsValidFPTypeString(fptypestring: 'std::string const &') -> "bool":
    """OEIsValidFPTypeString(std::string const & fptypestring) -> bool"""
    return _oegraphsim.OEIsValidFPTypeString(fptypestring)

def OEGetFPTypeVersion(typestr: 'std::string const &') -> "unsigned short":
    """OEGetFPTypeVersion(std::string const & typestr) -> unsigned short"""
    return _oegraphsim.OEGetFPTypeVersion(typestr)
class OEFPTypeParams(object):
    """Proxy of C++ OEGraphSim::OEFPTypeParams class."""

    thisown = _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__(OEGraphSim::OEFPTypeParams self, OEFPTypeBase fptype) -> OEFPTypeParams
        __init__(OEGraphSim::OEFPTypeParams self, std::string const & typestr) -> OEFPTypeParams
        """
        this = _oegraphsim.new_OEFPTypeParams(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFPTypeParams
    __del__ = lambda self: None

    def IsValid(self) -> "bool":
        """IsValid(OEFPTypeParams self) -> bool"""
        return _oegraphsim.OEFPTypeParams_IsValid(self)


    def GetFPType(self) -> "unsigned int":
        """GetFPType(OEFPTypeParams self) -> unsigned int"""
        return _oegraphsim.OEFPTypeParams_GetFPType(self)


    def GetVersion(self) -> "unsigned short":
        """GetVersion(OEFPTypeParams self) -> unsigned short"""
        return _oegraphsim.OEFPTypeParams_GetVersion(self)


    def GetNumBits(self) -> "unsigned int":
        """GetNumBits(OEFPTypeParams self) -> unsigned int"""
        return _oegraphsim.OEFPTypeParams_GetNumBits(self)


    def GetMinDistance(self) -> "unsigned int":
        """GetMinDistance(OEFPTypeParams self) -> unsigned int"""
        return _oegraphsim.OEFPTypeParams_GetMinDistance(self)


    def GetMaxDistance(self) -> "unsigned int":
        """GetMaxDistance(OEFPTypeParams self) -> unsigned int"""
        return _oegraphsim.OEFPTypeParams_GetMaxDistance(self)


    def GetAtomTypes(self) -> "unsigned int":
        """GetAtomTypes(OEFPTypeParams self) -> unsigned int"""
        return _oegraphsim.OEFPTypeParams_GetAtomTypes(self)


    def GetBondTypes(self) -> "unsigned int":
        """GetBondTypes(OEFPTypeParams self) -> unsigned int"""
        return _oegraphsim.OEFPTypeParams_GetBondTypes(self)

OEFPTypeParams_swigregister = _oegraphsim.OEFPTypeParams_swigregister
OEFPTypeParams_swigregister(OEFPTypeParams)

class OESimScoreIter(object):
    """Proxy of C++ OESystem::OEIter<(OEGraphSim::OESimScore)> class."""

    thisown = _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<(OEGraphSim::OESimScore)> self) -> OESimScoreIter
        __init__(OESystem::OEIter<(OEGraphSim::OESimScore)> self, OESimScoreIter rhs) -> OESimScoreIter
        __init__(OESystem::OEIter<(OEGraphSim::OESimScore)> self, OESystem::OEIterBase< OEGraphSim::OESimScore > * rhs) -> OESimScoreIter
        __init__(OESystem::OEIter<(OEGraphSim::OESimScore)> self, OESystem::OEIterBase< OESystem::OEIter< OEGraphSim::OESimScore >::NonConstA > * rhs) -> OESimScoreIter
        """
        this = _oegraphsim.new_OESimScoreIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OESimScoreIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEGraphSim::OESimScore > *":
        """Copy(OESimScoreIter self) -> OESystem::OEIterBase< OEGraphSim::OESimScore > *"""
        return _oegraphsim.OESimScoreIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESimScoreIter self, OESystem::OEIterBase< OEGraphSim::OESimScore > * ib)
        Push(OESimScoreIter self, OESimScoreIter iter)
        """
        return _oegraphsim.OESimScoreIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEGraphSim::OESimScore,OEGraphSim::OESimScore > const &') -> "void":
        """Sort(OESimScoreIter self, OESystem::OEBinaryPredicate< OEGraphSim::OESimScore,OEGraphSim::OESimScore > const & sort_criterion)"""
        return _oegraphsim.OESimScoreIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEGraphSim::OESimScore > &":
        """ToFirst(OESimScoreIter self) -> OESimScoreIter"""
        return _oegraphsim.OESimScoreIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEGraphSim::OESimScore > &":
        """ToLast(OESimScoreIter self) -> OESimScoreIter"""
        return _oegraphsim.OESimScoreIter_ToLast(self)


    def __ref__(self) -> "OEGraphSim::OESimScore &":
        """__ref__(OESimScoreIter self) -> OESimScore"""
        return _oegraphsim.OESimScoreIter___ref__(self)


    def IsValid(self):
      return _oegraphsim.OESimScoreIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESimScoreIter self) -> PyObject *"""
        return _oegraphsim.OESimScoreIter_next(self)


    def Target(self) -> "OEGraphSim::OESimScore &":
        """Target(OESimScoreIter self) -> OESimScore"""
        return _oegraphsim.OESimScoreIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEGraphSim::OESimScore > &":
        """
        Next(OESimScoreIter self) -> OESimScoreIter
        Next(OESimScoreIter self, int i) -> OESimScoreIter
        """
        return _oegraphsim.OESimScoreIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEGraphSim::OESimScore > &":
        """
        Prev(OESimScoreIter self) -> OESimScoreIter
        Prev(OESimScoreIter self, int i) -> OESimScoreIter
        """
        return _oegraphsim.OESimScoreIter_Prev(self, *args)

OESimScoreIter_swigregister = _oegraphsim.OESimScoreIter_swigregister
OESimScoreIter_swigregister(OESimScoreIter)

class OESimScorePairIter(object):
    """Proxy of C++ OESystem::OEIter<(OEGraphSim::OESimScorePair)> class."""

    thisown = _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<(OEGraphSim::OESimScorePair)> self) -> OESimScorePairIter
        __init__(OESystem::OEIter<(OEGraphSim::OESimScorePair)> self, OESimScorePairIter rhs) -> OESimScorePairIter
        __init__(OESystem::OEIter<(OEGraphSim::OESimScorePair)> self, OESystem::OEIterBase< OEGraphSim::OESimScorePair > * rhs) -> OESimScorePairIter
        __init__(OESystem::OEIter<(OEGraphSim::OESimScorePair)> self, OESystem::OEIterBase< OESystem::OEIter< OEGraphSim::OESimScorePair >::NonConstA > * rhs) -> OESimScorePairIter
        """
        this = _oegraphsim.new_OESimScorePairIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OESimScorePairIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEGraphSim::OESimScorePair > *":
        """Copy(OESimScorePairIter self) -> OESystem::OEIterBase< OEGraphSim::OESimScorePair > *"""
        return _oegraphsim.OESimScorePairIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OESimScorePairIter self, OESystem::OEIterBase< OEGraphSim::OESimScorePair > * ib)
        Push(OESimScorePairIter self, OESimScorePairIter iter)
        """
        return _oegraphsim.OESimScorePairIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEGraphSim::OESimScorePair,OEGraphSim::OESimScorePair > const &') -> "void":
        """Sort(OESimScorePairIter self, OESystem::OEBinaryPredicate< OEGraphSim::OESimScorePair,OEGraphSim::OESimScorePair > const & sort_criterion)"""
        return _oegraphsim.OESimScorePairIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEGraphSim::OESimScorePair > &":
        """ToFirst(OESimScorePairIter self) -> OESimScorePairIter"""
        return _oegraphsim.OESimScorePairIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEGraphSim::OESimScorePair > &":
        """ToLast(OESimScorePairIter self) -> OESimScorePairIter"""
        return _oegraphsim.OESimScorePairIter_ToLast(self)


    def __ref__(self) -> "OEGraphSim::OESimScorePair &":
        """__ref__(OESimScorePairIter self) -> OESimScorePair"""
        return _oegraphsim.OESimScorePairIter___ref__(self)


    def IsValid(self):
      return _oegraphsim.OESimScorePairIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OESimScorePairIter self) -> PyObject *"""
        return _oegraphsim.OESimScorePairIter_next(self)


    def Target(self) -> "OEGraphSim::OESimScorePair &":
        """Target(OESimScorePairIter self) -> OESimScorePair"""
        return _oegraphsim.OESimScorePairIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEGraphSim::OESimScorePair > &":
        """
        Next(OESimScorePairIter self) -> OESimScorePairIter
        Next(OESimScorePairIter self, int i) -> OESimScorePairIter
        """
        return _oegraphsim.OESimScorePairIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEGraphSim::OESimScorePair > &":
        """
        Prev(OESimScorePairIter self) -> OESimScorePairIter
        Prev(OESimScorePairIter self, int i) -> OESimScorePairIter
        """
        return _oegraphsim.OESimScorePairIter_Prev(self, *args)

OESimScorePairIter_swigregister = _oegraphsim.OESimScorePairIter_swigregister
OESimScorePairIter_swigregister(OESimScorePairIter)

class OEFingerPrintIter(object):
    """Proxy of C++ OESystem::OEIter<(q(const).OEGraphSim::OEFingerPrint)> class."""

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

    def __init__(self, *args):
        """
        __init__(OESystem::OEIter<(q(const).OEGraphSim::OEFingerPrint)> self) -> OEFingerPrintIter
        __init__(OESystem::OEIter<(q(const).OEGraphSim::OEFingerPrint)> self, OEFingerPrintIter rhs) -> OEFingerPrintIter
        __init__(OESystem::OEIter<(q(const).OEGraphSim::OEFingerPrint)> self, OESystem::OEIterBase< OEGraphSim::OEFingerPrint const > * rhs) -> OEFingerPrintIter
        __init__(OESystem::OEIter<(q(const).OEGraphSim::OEFingerPrint)> self, OESystem::OEIterBase< OESystem::OEIter< OEGraphSim::OEFingerPrint const >::NonConstA > * rhs) -> OEFingerPrintIter
        """
        this = _oegraphsim.new_OEFingerPrintIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFingerPrintIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEGraphSim::OEFingerPrint const > *":
        """Copy(OEFingerPrintIter self) -> OESystem::OEIterBase< OEGraphSim::OEFingerPrint const > *"""
        return _oegraphsim.OEFingerPrintIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEFingerPrintIter self, OESystem::OEIterBase< OEGraphSim::OEFingerPrint const > * ib)
        Push(OEFingerPrintIter self, OEFingerPrintIter iter)
        """
        return _oegraphsim.OEFingerPrintIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEGraphSim::OEFingerPrint const,OEGraphSim::OEFingerPrint const > const &') -> "void":
        """Sort(OEFingerPrintIter self, OESystem::OEBinaryPredicate< OEGraphSim::OEFingerPrint const,OEGraphSim::OEFingerPrint const > const & sort_criterion)"""
        return _oegraphsim.OEFingerPrintIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEGraphSim::OEFingerPrint const > &":
        """ToFirst(OEFingerPrintIter self) -> OEFingerPrintIter"""
        return _oegraphsim.OEFingerPrintIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEGraphSim::OEFingerPrint const > &":
        """ToLast(OEFingerPrintIter self) -> OEFingerPrintIter"""
        return _oegraphsim.OEFingerPrintIter_ToLast(self)


    def __ref__(self) -> "OEGraphSim::OEFingerPrint const &":
        """__ref__(OEFingerPrintIter self) -> OEFingerPrint"""
        return _oegraphsim.OEFingerPrintIter___ref__(self)


    def IsValid(self):
      return _oegraphsim.OEFingerPrintIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEFingerPrintIter self) -> PyObject *"""
        return _oegraphsim.OEFingerPrintIter_next(self)


    def Target(self) -> "OEGraphSim::OEFingerPrint const &":
        """Target(OEFingerPrintIter self) -> OEFingerPrint"""
        return _oegraphsim.OEFingerPrintIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEGraphSim::OEFingerPrint const > &":
        """
        Next(OEFingerPrintIter self) -> OEFingerPrintIter
        Next(OEFingerPrintIter self, int i) -> OEFingerPrintIter
        """
        return _oegraphsim.OEFingerPrintIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEGraphSim::OEFingerPrint const > &":
        """
        Prev(OEFingerPrintIter self) -> OEFingerPrintIter
        Prev(OEFingerPrintIter self, int i) -> OEFingerPrintIter
        """
        return _oegraphsim.OEFingerPrintIter_Prev(self, *args)

OEFingerPrintIter_swigregister = _oegraphsim.OEFingerPrintIter_swigregister
OEFingerPrintIter_swigregister(OEFingerPrintIter)


def OEConfigureFingerPrint(itf: 'OEInterface', deffptype: 'OEFPTypeBase') -> "bool":
    """OEConfigureFingerPrint(OEInterface itf, OEFPTypeBase deffptype) -> bool"""
    return _oegraphsim.OEConfigureFingerPrint(itf, deffptype)

def OESetupFingerPrint(itf: 'OEInterface') -> "OEGraphSim::OEFPTypeBase const *":
    """OESetupFingerPrint(OEInterface itf) -> OEFPTypeBase"""
    return _oegraphsim.OESetupFingerPrint(itf)

def OEGetFPAtomType(*args) -> "std::string":
    """
    OEGetFPAtomType(std::string const & expression) -> unsigned int
    OEGetFPAtomType(unsigned int value) -> std::string
    """
    return _oegraphsim.OEGetFPAtomType(*args)

def OEGetFPBondType(*args) -> "std::string":
    """
    OEGetFPBondType(std::string const & expression) -> unsigned int
    OEGetFPBondType(unsigned int value) -> std::string
    """
    return _oegraphsim.OEGetFPBondType(*args)
class OEFPDatabaseOptions(object):
    """Proxy of C++ OEGraphSim::OEFPDatabaseOptions class."""

    thisown = _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__(OEGraphSim::OEFPDatabaseOptions self) -> OEFPDatabaseOptions
        __init__(OEGraphSim::OEFPDatabaseOptions self, unsigned int limit, unsigned int simfunc) -> OEFPDatabaseOptions
        __init__(OEGraphSim::OEFPDatabaseOptions self, unsigned int limit) -> OEFPDatabaseOptions
        __init__(OEGraphSim::OEFPDatabaseOptions self, OEFPDatabaseOptions rhs) -> OEFPDatabaseOptions
        """
        this = _oegraphsim.new_OEFPDatabaseOptions(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFPDatabaseOptions
    __del__ = lambda self: None

    def HasCutoff(self) -> "bool":
        """HasCutoff(OEFPDatabaseOptions self) -> bool"""
        return _oegraphsim.OEFPDatabaseOptions_HasCutoff(self)


    def SetCutoff(self, arg2: 'float') -> "void":
        """SetCutoff(OEFPDatabaseOptions self, float arg2)"""
        return _oegraphsim.OEFPDatabaseOptions_SetCutoff(self, arg2)


    def GetCutoff(self) -> "float":
        """GetCutoff(OEFPDatabaseOptions self) -> float"""
        return _oegraphsim.OEFPDatabaseOptions_GetCutoff(self)


    def ClearCutoff(self) -> "void":
        """ClearCutoff(OEFPDatabaseOptions self)"""
        return _oegraphsim.OEFPDatabaseOptions_ClearCutoff(self)


    def SetSimFunc(self, type: 'unsigned int') -> "void":
        """SetSimFunc(OEFPDatabaseOptions self, unsigned int type)"""
        return _oegraphsim.OEFPDatabaseOptions_SetSimFunc(self, type)


    def GetSimFunc(self) -> "unsigned int":
        """GetSimFunc(OEFPDatabaseOptions self) -> unsigned int"""
        return _oegraphsim.OEFPDatabaseOptions_GetSimFunc(self)


    def SetTverskyCoeffs(self, alpha: 'float'=0.95, beta: 'float'=0.05) -> "void":
        """
        SetTverskyCoeffs(OEFPDatabaseOptions self, float alpha=0.95, float beta=0.05)
        SetTverskyCoeffs(OEFPDatabaseOptions self, float alpha=0.95)
        SetTverskyCoeffs(OEFPDatabaseOptions self)
        """
        return _oegraphsim.OEFPDatabaseOptions_SetTverskyCoeffs(self, alpha, beta)


    def GetTverskyAlpha(self) -> "float":
        """GetTverskyAlpha(OEFPDatabaseOptions self) -> float"""
        return _oegraphsim.OEFPDatabaseOptions_GetTverskyAlpha(self)


    def GetTverskyBeta(self) -> "float":
        """GetTverskyBeta(OEFPDatabaseOptions self) -> float"""
        return _oegraphsim.OEFPDatabaseOptions_GetTverskyBeta(self)


    def SetDescendingOrder(self, descending: 'bool'=True) -> "void":
        """
        SetDescendingOrder(OEFPDatabaseOptions self, bool descending=True)
        SetDescendingOrder(OEFPDatabaseOptions self)
        """
        return _oegraphsim.OEFPDatabaseOptions_SetDescendingOrder(self, descending)


    def GetDescendingOrder(self) -> "bool":
        """GetDescendingOrder(OEFPDatabaseOptions self) -> bool"""
        return _oegraphsim.OEFPDatabaseOptions_GetDescendingOrder(self)


    def SetLimit(self, arg2: 'unsigned int') -> "void":
        """SetLimit(OEFPDatabaseOptions self, unsigned int arg2)"""
        return _oegraphsim.OEFPDatabaseOptions_SetLimit(self, arg2)


    def GetLimit(self) -> "unsigned int":
        """GetLimit(OEFPDatabaseOptions self) -> unsigned int"""
        return _oegraphsim.OEFPDatabaseOptions_GetLimit(self)

OEFPDatabaseOptions_swigregister = _oegraphsim.OEFPDatabaseOptions_swigregister
OEFPDatabaseOptions_swigregister(OEFPDatabaseOptions)


def OEConfigureFPDatabaseOptions(*args) -> "bool":
    """
    OEConfigureFPDatabaseOptions(OEInterface itf, OEFPDatabaseOptions defopts) -> bool
    OEConfigureFPDatabaseOptions(OEInterface itf, unsigned int config) -> bool
    OEConfigureFPDatabaseOptions(OEInterface itf) -> bool
    """
    return _oegraphsim.OEConfigureFPDatabaseOptions(*args)

def OESetupFPDatabaseOptions(opts: 'OEFPDatabaseOptions', itf: 'OEInterface') -> "bool":
    """OESetupFPDatabaseOptions(OEFPDatabaseOptions opts, OEInterface itf) -> bool"""
    return _oegraphsim.OESetupFPDatabaseOptions(opts, itf)

def OEConfigureFPDatabaseMemoryType(*args) -> "bool":
    """
    OEConfigureFPDatabaseMemoryType(OEInterface itf, unsigned int defvalue, std::string name, std::string alias) -> bool
    OEConfigureFPDatabaseMemoryType(OEInterface itf, unsigned int defvalue, std::string name) -> bool
    OEConfigureFPDatabaseMemoryType(OEInterface itf, unsigned int defvalue) -> bool
    OEConfigureFPDatabaseMemoryType(OEInterface itf) -> bool
    """
    return _oegraphsim.OEConfigureFPDatabaseMemoryType(*args)

def OEGetFPDatabaseMemoryType(*args) -> "unsigned int":
    """
    OEGetFPDatabaseMemoryType(OEInterface itf, std::string const name) -> unsigned int
    OEGetFPDatabaseMemoryType(OEInterface itf) -> unsigned int
    """
    return _oegraphsim.OEGetFPDatabaseMemoryType(*args)
class OEFPDatabase(object):
    """Proxy of C++ OEGraphSim::OEFPDatabase class."""

    thisown = _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__(OEGraphSim::OEFPDatabase self, unsigned int fptype) -> OEFPDatabase
        __init__(OEGraphSim::OEFPDatabase self, OEFPTypeBase arg2) -> OEFPDatabase
        """
        this = _oegraphsim.new_OEFPDatabase(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFPDatabase
    __del__ = lambda self: None

    def GetFPTypeBase(self) -> "OEGraphSim::OEFPTypeBase const *":
        """GetFPTypeBase(OEFPDatabase self) -> OEFPTypeBase"""
        return _oegraphsim.OEFPDatabase_GetFPTypeBase(self)


    def HasCutoff(self) -> "bool":
        """HasCutoff(OEFPDatabase self) -> bool"""
        return _oegraphsim.OEFPDatabase_HasCutoff(self)


    def SetCutoff(self, arg2: 'float') -> "void":
        """SetCutoff(OEFPDatabase self, float arg2)"""
        return _oegraphsim.OEFPDatabase_SetCutoff(self, arg2)


    def GetCutoff(self) -> "float":
        """GetCutoff(OEFPDatabase self) -> float"""
        return _oegraphsim.OEFPDatabase_GetCutoff(self)


    def ClearCutoff(self) -> "void":
        """ClearCutoff(OEFPDatabase self)"""
        return _oegraphsim.OEFPDatabase_ClearCutoff(self)


    def SetSimFunc(self, *args) -> "void":
        """
        SetSimFunc(OEFPDatabase self, unsigned int simtype, bool descending=True)
        SetSimFunc(OEFPDatabase self, unsigned int simtype)
        SetSimFunc(OEFPDatabase self, OESimFuncBase arg2, bool descending=True)
        SetSimFunc(OEFPDatabase self, OESimFuncBase arg2)
        """
        return _oegraphsim.OEFPDatabase_SetSimFunc(self, *args)


    def SetDescendingOrder(self, arg2: 'bool') -> "void":
        """SetDescendingOrder(OEFPDatabase self, bool arg2)"""
        return _oegraphsim.OEFPDatabase_SetDescendingOrder(self, arg2)


    def GetDescendingOrder(self) -> "bool":
        """GetDescendingOrder(OEFPDatabase self) -> bool"""
        return _oegraphsim.OEFPDatabase_GetDescendingOrder(self)


    def AddFP(self, *args):
        idx = _oegraphsim.OEFPDatabase_AddFP(self, *args)
        if idx == 2 ** 32 -1 or idx == -1: # ((unsigned int) -1)
            raise RuntimeError("Unable to add '%s' to the OEFPDatabase" % repr(*args))
        return idx



    def NumFingerPrints(self) -> "unsigned int":
        """NumFingerPrints(OEFPDatabase self) -> unsigned int"""
        return _oegraphsim.OEFPDatabase_NumFingerPrints(self)


    def GetFingerPrints(self) -> "OESystem::OEIterBase< OEGraphSim::OEFingerPrint const > *":
        """GetFingerPrints(OEFPDatabase self) -> OESystem::OEIterBase< OEGraphSim::OEFingerPrint const > *"""
        return _oegraphsim.OEFPDatabase_GetFingerPrints(self)


    def GetScores(self, *args) -> "OESystem::OEIterBase< OEGraphSim::OESimScore > *":
        """
        GetScores(OEFPDatabase self, OEFingerPrint fp, unsigned int bgn=0, unsigned int end=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEFingerPrint fp, unsigned int bgn=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEFingerPrint fp) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEMolBase mol, unsigned int bgn=0, unsigned int end=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEMolBase mol, unsigned int bgn=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEMolBase mol) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEFingerPrint fp, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFPDatabase self, OEMolBase mol, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore > *
        """
        return _oegraphsim.OEFPDatabase_GetScores(self, *args)


    def GetSortedScores(self, *args) -> "OESystem::OEIterBase< OEGraphSim::OESimScore > *":
        """
        GetSortedScores(OEFPDatabase self, OEFingerPrint fp, unsigned int limit=0, unsigned int bgn=0, unsigned int end=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEFingerPrint fp, unsigned int limit=0, unsigned int bgn=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEFingerPrint fp, unsigned int limit=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEFingerPrint fp) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEMolBase mol, unsigned int limit=0, unsigned int bgn=0, unsigned int end=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEMolBase mol, unsigned int limit=0, unsigned int bgn=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEMolBase mol, unsigned int limit=0) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEMolBase mol) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEFingerPrint fp, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFPDatabase self, OEMolBase mol, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore > *
        """
        return _oegraphsim.OEFPDatabase_GetSortedScores(self, *args)

OEFPDatabase_swigregister = _oegraphsim.OEFPDatabase_swigregister
OEFPDatabase_swigregister(OEFPDatabase)


def OEGetSimilarityMeasureName(simtype: 'unsigned int') -> "std::string":
    """OEGetSimilarityMeasureName(unsigned int simtype) -> std::string"""
    return _oegraphsim.OEGetSimilarityMeasureName(simtype)

def OETanimoto(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
    """OETanimoto(OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
    return _oegraphsim.OETanimoto(fpA, fpB)

def OECosine(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
    """OECosine(OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
    return _oegraphsim.OECosine(fpA, fpB)

def OEDice(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
    """OEDice(OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
    return _oegraphsim.OEDice(fpA, fpB)

def OEEuclid(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
    """OEEuclid(OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
    return _oegraphsim.OEEuclid(fpA, fpB)

def OETversky(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint', a: 'float', b: 'float') -> "float":
    """OETversky(OEFingerPrint fpA, OEFingerPrint fpB, float a, float b) -> float"""
    return _oegraphsim.OETversky(fpA, fpB, a, b)

def OEManhattan(fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
    """OEManhattan(OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
    return _oegraphsim.OEManhattan(fpA, fpB)
class OESimFuncBase(object):
    """Proxy of C++ OEGraphSim::OESimFuncBase class."""

    thisown = _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__(OEGraphSim::OESimFuncBase self) -> OESimFuncBase"""
        if self.__class__ == OESimFuncBase:
            _self = None
        else:
            _self = self
        this = _oegraphsim.new_OESimFuncBase(_self, )
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OESimFuncBase
    __del__ = lambda self: None

    def __call__(self, fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
        """__call__(OESimFuncBase self, OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
        return _oegraphsim.OESimFuncBase___call__(self, fpA, fpB)


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



    def GetSimTypeString(self) -> "std::string":
        """GetSimTypeString(OESimFuncBase self) -> std::string"""
        return _oegraphsim.OESimFuncBase_GetSimTypeString(self)

    def __disown__(self):
        self.this.disown()
        _oegraphsim.disown_OESimFuncBase(self)
        return weakref_proxy(self)
OESimFuncBase_swigregister = _oegraphsim.OESimFuncBase_swigregister
OESimFuncBase_swigregister(OESimFuncBase)

class OETanimotoSim(OESimFuncBase):
    """Proxy of C++ OEGraphSim::OETanimotoSim class."""

    thisown = _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__(OEGraphSim::OETanimotoSim self) -> OETanimotoSim"""
        this = _oegraphsim.new_OETanimotoSim()
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
        """__call__(OETanimotoSim self, OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
        return _oegraphsim.OETanimotoSim___call__(self, fpA, fpB)


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



    def GetSimTypeString(self) -> "std::string":
        """GetSimTypeString(OETanimotoSim self) -> std::string"""
        return _oegraphsim.OETanimotoSim_GetSimTypeString(self)

    __swig_destroy__ = _oegraphsim.delete_OETanimotoSim
    __del__ = lambda self: None
OETanimotoSim_swigregister = _oegraphsim.OETanimotoSim_swigregister
OETanimotoSim_swigregister(OETanimotoSim)

class OETverskySim(OESimFuncBase):
    """Proxy of C++ OEGraphSim::OETverskySim class."""

    thisown = _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__(OEGraphSim::OETverskySim self, float a=0.95) -> OETverskySim
        __init__(OEGraphSim::OETverskySim self) -> OETverskySim
        __init__(OEGraphSim::OETverskySim self, float a, float b) -> OETverskySim
        """
        this = _oegraphsim.new_OETverskySim(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def __call__(self, fpA: 'OEFingerPrint', fpB: 'OEFingerPrint') -> "float":
        """__call__(OETverskySim self, OEFingerPrint fpA, OEFingerPrint fpB) -> float"""
        return _oegraphsim.OETverskySim___call__(self, fpA, fpB)


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



    def GetSimTypeString(self) -> "std::string":
        """GetSimTypeString(OETverskySim self) -> std::string"""
        return _oegraphsim.OETverskySim_GetSimTypeString(self)


    def GetAlpha(self) -> "float":
        """GetAlpha(OETverskySim self) -> float"""
        return _oegraphsim.OETverskySim_GetAlpha(self)


    def GetBeta(self) -> "float":
        """GetBeta(OETverskySim self) -> float"""
        return _oegraphsim.OETverskySim_GetBeta(self)

    __swig_destroy__ = _oegraphsim.delete_OETverskySim
    __del__ = lambda self: None
OETverskySim_swigregister = _oegraphsim.OETverskySim_swigregister
OETverskySim_swigregister(OETverskySim)


def OEGetBitCounts(*args) -> "PyObject *":
    """
    OEGetBitCounts(OEFingerPrint fpA, OEFingerPrint fpB, unsigned int * onlyA, unsigned int * onlyB, unsigned int * bothAB, unsigned int * neitherAB) -> bool
    OEGetBitCounts(OEFingerPrint a, OEFingerPrint b) -> PyObject *
    """
    return _oegraphsim.OEGetBitCounts(*args)

def OEGetFingerPrintVersion(fptype: 'unsigned int') -> "unsigned short":
    """OEGetFingerPrintVersion(unsigned int fptype) -> unsigned short"""
    return _oegraphsim.OEGetFingerPrintVersion(fptype)

def OEGetFingerPrintVersionString(version: 'unsigned short') -> "std::string":
    """OEGetFingerPrintVersionString(unsigned short version) -> std::string"""
    return _oegraphsim.OEGetFingerPrintVersionString(version)
class OEFPHistogram(object):
    """Proxy of C++ OEGraphSim::OEFPHistogram class."""

    thisown = _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__(OEGraphSim::OEFPHistogram self, size_t numBins=200, double min=0.0, double max=1.0) -> OEFPHistogram
        __init__(OEGraphSim::OEFPHistogram self, size_t numBins=200, double min=0.0) -> OEFPHistogram
        __init__(OEGraphSim::OEFPHistogram self, size_t numBins=200) -> OEFPHistogram
        __init__(OEGraphSim::OEFPHistogram self) -> OEFPHistogram
        __init__(OEGraphSim::OEFPHistogram self, std::vector< uint64_t > const & counts, double min=0.0, double max=1.0) -> OEFPHistogram
        __init__(OEGraphSim::OEFPHistogram self, std::vector< uint64_t > const & counts, double min=0.0) -> OEFPHistogram
        __init__(OEGraphSim::OEFPHistogram self, std::vector< uint64_t > const & counts) -> OEFPHistogram
        """
        this = _oegraphsim.new_OEFPHistogram(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def GetBinIdx(self, sample: 'float const') -> "size_t":
        """GetBinIdx(OEFPHistogram self, float const sample) -> size_t"""
        return _oegraphsim.OEFPHistogram_GetBinIdx(self, sample)


    def AddSample(self, sample: 'float const') -> "size_t":
        """AddSample(OEFPHistogram self, float const sample) -> size_t"""
        return _oegraphsim.OEFPHistogram_AddSample(self, sample)


    def GetCounts(self) -> "OESystem::OEIterBase< unsigned int > *":
        """GetCounts(OEFPHistogram self) -> OESystem::OEIterBase< unsigned int > *"""
        return _oegraphsim.OEFPHistogram_GetCounts(self)


    def GetDensity(self) -> "OESystem::OEIterBase< double > *":
        """GetDensity(OEFPHistogram self) -> OESystem::OEIterBase< double > *"""
        return _oegraphsim.OEFPHistogram_GetDensity(self)


    def GetBinCenters(self) -> "OESystem::OEIterBase< double > *":
        """GetBinCenters(OEFPHistogram self) -> OESystem::OEIterBase< double > *"""
        return _oegraphsim.OEFPHistogram_GetBinCenters(self)


    def GetBinBoundaries(self) -> "OESystem::OEIterBase< double > *":
        """GetBinBoundaries(OEFPHistogram self) -> OESystem::OEIterBase< double > *"""
        return _oegraphsim.OEFPHistogram_GetBinBoundaries(self)


    def NumSamples(self) -> "unsigned long long":
        """NumSamples(OEFPHistogram self) -> unsigned long long"""
        return _oegraphsim.OEFPHistogram_NumSamples(self)


    def NumBins(self) -> "size_t":
        """NumBins(OEFPHistogram self) -> size_t"""
        return _oegraphsim.OEFPHistogram_NumBins(self)


    def GetBinWidth(self) -> "double":
        """GetBinWidth(OEFPHistogram self) -> double"""
        return _oegraphsim.OEFPHistogram_GetBinWidth(self)


    def GetMin(self) -> "double":
        """GetMin(OEFPHistogram self) -> double"""
        return _oegraphsim.OEFPHistogram_GetMin(self)


    def GetMax(self) -> "double":
        """GetMax(OEFPHistogram self) -> double"""
        return _oegraphsim.OEFPHistogram_GetMax(self)


    def Mean(self) -> "double":
        """Mean(OEFPHistogram self) -> double"""
        return _oegraphsim.OEFPHistogram_Mean(self)


    def Std(self) -> "double":
        """Std(OEFPHistogram self) -> double"""
        return _oegraphsim.OEFPHistogram_Std(self)

    __swig_destroy__ = _oegraphsim.delete_OEFPHistogram
    __del__ = lambda self: None
OEFPHistogram_swigregister = _oegraphsim.OEFPHistogram_swigregister
OEFPHistogram_swigregister(OEFPHistogram)

class OEFPVariogram(OEFPHistogram):
    """Proxy of C++ OEGraphSim::OEFPVariogram class."""

    thisown = _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__(OEGraphSim::OEFPVariogram self, size_t numBins=200, double min=0.0, double max=1.0) -> OEFPVariogram
        __init__(OEGraphSim::OEFPVariogram self, size_t numBins=200, double min=0.0) -> OEFPVariogram
        __init__(OEGraphSim::OEFPVariogram self, size_t numBins=200) -> OEFPVariogram
        __init__(OEGraphSim::OEFPVariogram self) -> OEFPVariogram
        __init__(OEGraphSim::OEFPVariogram self, std::vector< uint64_t > const & counts, OEFloatVector varsums, double min=0.0, double max=1.0) -> OEFPVariogram
        __init__(OEGraphSim::OEFPVariogram self, std::vector< uint64_t > const & counts, OEFloatVector varsums, double min=0.0) -> OEFPVariogram
        __init__(OEGraphSim::OEFPVariogram self, std::vector< uint64_t > const & counts, OEFloatVector varsums) -> OEFPVariogram
        """
        this = _oegraphsim.new_OEFPVariogram(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this

    def AddSample(self, sim: 'float const', obs: 'float const') -> "size_t":
        """AddSample(OEFPVariogram self, float const sim, float const obs) -> size_t"""
        return _oegraphsim.OEFPVariogram_AddSample(self, sim, obs)


    def GetVariogram(self) -> "OESystem::OEIterBase< double > *":
        """GetVariogram(OEFPVariogram self) -> OESystem::OEIterBase< double > *"""
        return _oegraphsim.OEFPVariogram_GetVariogram(self)

    __swig_destroy__ = _oegraphsim.delete_OEFPVariogram
    __del__ = lambda self: None
OEFPVariogram_swigregister = _oegraphsim.OEFPVariogram_swigregister
OEFPVariogram_swigregister(OEFPVariogram)

class OEFastFPDatabaseParams(object):
    """Proxy of C++ OEGraphSim::OEFastFPDatabaseParams class."""

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

    def __init__(self, fpdbfname: 'std::string const &'):
        """__init__(OEGraphSim::OEFastFPDatabaseParams self, std::string const & fpdbfname) -> OEFastFPDatabaseParams"""
        this = _oegraphsim.new_OEFastFPDatabaseParams(fpdbfname)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFastFPDatabaseParams
    __del__ = lambda self: None

    def IsValid(self) -> "bool":
        """IsValid(OEFastFPDatabaseParams self) -> bool"""
        return _oegraphsim.OEFastFPDatabaseParams_IsValid(self)


    def GetMolDatabaseFilename(self) -> "std::string const &":
        """GetMolDatabaseFilename(OEFastFPDatabaseParams self) -> std::string const &"""
        return _oegraphsim.OEFastFPDatabaseParams_GetMolDatabaseFilename(self)


    def GetFPTypeBase(self) -> "OEGraphSim::OEFPTypeBase const *":
        """GetFPTypeBase(OEFastFPDatabaseParams self) -> OEFPTypeBase"""
        return _oegraphsim.OEFastFPDatabaseParams_GetFPTypeBase(self)


    def NumFingerPrints(self) -> "size_t":
        """NumFingerPrints(OEFastFPDatabaseParams self) -> size_t"""
        return _oegraphsim.OEFastFPDatabaseParams_NumFingerPrints(self)


    def IsInLittleEndian(self) -> "bool":
        """IsInLittleEndian(OEFastFPDatabaseParams self) -> bool"""
        return _oegraphsim.OEFastFPDatabaseParams_IsInLittleEndian(self)


    def GetFileSize(self) -> "size_t":
        """GetFileSize(OEFastFPDatabaseParams self) -> size_t"""
        return _oegraphsim.OEFastFPDatabaseParams_GetFileSize(self)


    def GetFingerPrintSizeIn64(self) -> "size_t":
        """GetFingerPrintSizeIn64(OEFastFPDatabaseParams self) -> size_t"""
        return _oegraphsim.OEFastFPDatabaseParams_GetFingerPrintSizeIn64(self)


    def GetFingerPrintSizeIn32(self) -> "size_t":
        """GetFingerPrintSizeIn32(OEFastFPDatabaseParams self) -> size_t"""
        return _oegraphsim.OEFastFPDatabaseParams_GetFingerPrintSizeIn32(self)


    def GetFingerPrintSizeInBytes(self) -> "size_t":
        """GetFingerPrintSizeInBytes(OEFastFPDatabaseParams self) -> size_t"""
        return _oegraphsim.OEFastFPDatabaseParams_GetFingerPrintSizeInBytes(self)


    def GetFingerPrintSizeInBits(self) -> "size_t":
        """GetFingerPrintSizeInBits(OEFastFPDatabaseParams self) -> size_t"""
        return _oegraphsim.OEFastFPDatabaseParams_GetFingerPrintSizeInBits(self)

OEFastFPDatabaseParams_swigregister = _oegraphsim.OEFastFPDatabaseParams_swigregister
OEFastFPDatabaseParams_swigregister(OEFastFPDatabaseParams)


def OEIsFastFPDatabaseReady() -> "bool":
    """OEIsFastFPDatabaseReady() -> bool"""
    return _oegraphsim.OEIsFastFPDatabaseReady()

def OEGraphsimIsGPUReady() -> "bool":
    """OEGraphsimIsGPUReady() -> bool"""
    return _oegraphsim.OEGraphsimIsGPUReady()

def OEGetPopCountMethod() -> "unsigned int":
    """OEGetPopCountMethod() -> unsigned int"""
    return _oegraphsim.OEGetPopCountMethod()

def OEAreCompatibleDatabases(arg1: 'OEMolDatabase', arg2: 'OEFastFPDatabase') -> "bool":
    """OEAreCompatibleDatabases(OEMolDatabase arg1, OEFastFPDatabase arg2) -> bool"""
    return _oegraphsim.OEAreCompatibleDatabases(arg1, arg2)
class OECreateFastFPDatabaseOptions(object):
    """Proxy of C++ OEGraphSim::OECreateFastFPDatabaseOptions class."""

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

    def __init__(self, fptype: 'OEFPTypeBase'):
        """__init__(OEGraphSim::OECreateFastFPDatabaseOptions self, OEFPTypeBase fptype) -> OECreateFastFPDatabaseOptions"""
        this = _oegraphsim.new_OECreateFastFPDatabaseOptions(fptype)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OECreateFastFPDatabaseOptions
    __del__ = lambda self: None

    def GetFPType(self) -> "OEGraphSim::OEFPTypeBase const *":
        """GetFPType(OECreateFastFPDatabaseOptions self) -> OEFPTypeBase"""
        return _oegraphsim.OECreateFastFPDatabaseOptions_GetFPType(self)


    def SetNumProcessors(self, nrps: 'unsigned int') -> "void":
        """SetNumProcessors(OECreateFastFPDatabaseOptions self, unsigned int nrps)"""
        return _oegraphsim.OECreateFastFPDatabaseOptions_SetNumProcessors(self, nrps)


    def GetNumProcessors(self) -> "unsigned int":
        """GetNumProcessors(OECreateFastFPDatabaseOptions self) -> unsigned int"""
        return _oegraphsim.OECreateFastFPDatabaseOptions_GetNumProcessors(self)


    def SetTracer(self, dots: 'OEDots') -> "void":
        """SetTracer(OECreateFastFPDatabaseOptions self, OEDots dots)"""
        return _oegraphsim.OECreateFastFPDatabaseOptions_SetTracer(self, dots)


    def GetTracer(self) -> "OESystem::OEDots const *":
        """GetTracer(OECreateFastFPDatabaseOptions self) -> OEDots"""
        return _oegraphsim.OECreateFastFPDatabaseOptions_GetTracer(self)

OECreateFastFPDatabaseOptions_swigregister = _oegraphsim.OECreateFastFPDatabaseOptions_swigregister
OECreateFastFPDatabaseOptions_swigregister(OECreateFastFPDatabaseOptions)


def OECreateFastFPDatabaseFile(*args) -> "bool":
    """
    OECreateFastFPDatabaseFile(std::string const & fpdbfname, std::string const & molfname, OEFPTypeBase fptype) -> bool
    OECreateFastFPDatabaseFile(std::string const & fpdbfname, std::string const & molfname, OECreateFastFPDatabaseOptions opts) -> bool
    """
    return _oegraphsim.OECreateFastFPDatabaseFile(*args)
class OEFastFPDatabase(object):
    """Proxy of C++ OEGraphSim::OEFastFPDatabase class."""

    thisown = _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__(OEGraphSim::OEFastFPDatabase self, std::string const & dbfile, unsigned int memtype) -> OEFastFPDatabase
        __init__(OEGraphSim::OEFastFPDatabase self, std::string const & dbfile) -> OEFastFPDatabase
        """
        this = _oegraphsim.new_OEFastFPDatabase(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFastFPDatabase
    __del__ = lambda self: None

    def IsValid(self) -> "bool":
        """IsValid(OEFastFPDatabase self) -> bool"""
        return _oegraphsim.OEFastFPDatabase_IsValid(self)


    def GetFPTypeBase(self) -> "OEGraphSim::OEFPTypeBase const *":
        """GetFPTypeBase(OEFastFPDatabase self) -> OEFPTypeBase"""
        return _oegraphsim.OEFastFPDatabase_GetFPTypeBase(self)


    def NumFingerPrints(self) -> "size_t":
        """NumFingerPrints(OEFastFPDatabase self) -> size_t"""
        return _oegraphsim.OEFastFPDatabase_NumFingerPrints(self)


    def GetMemoryType(self) -> "unsigned int":
        """GetMemoryType(OEFastFPDatabase self) -> unsigned int"""
        return _oegraphsim.OEFastFPDatabase_GetMemoryType(self)


    def GetMemoryTypeString(self) -> "std::string":
        """GetMemoryTypeString(OEFastFPDatabase self) -> std::string"""
        return _oegraphsim.OEFastFPDatabase_GetMemoryTypeString(self)


    def GetFingerPrint(self, fp: 'OEFingerPrint', fpidx: 'size_t') -> "bool":
        """GetFingerPrint(OEFastFPDatabase self, OEFingerPrint fp, size_t fpidx) -> bool"""
        return _oegraphsim.OEFastFPDatabase_GetFingerPrint(self, fp, fpidx)


    def GetScores(self, *args) -> "OESystem::OEIterBase< OEGraphSim::OESimScore > *":
        """
        GetScores(OEFastFPDatabase self, OEFingerPrint fp, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFastFPDatabase self, OEMolBase mol, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetScores(OEFastFPDatabase self, size_t const idx, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore > *
        """
        return _oegraphsim.OEFastFPDatabase_GetScores(self, *args)


    def GetSortedScores(self, *args) -> "OESystem::OEIterBase< OEGraphSim::OESimScore > *":
        """
        GetSortedScores(OEFastFPDatabase self, OEFingerPrint fp, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFastFPDatabase self, OEMolBase mol, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore >
        GetSortedScores(OEFastFPDatabase self, size_t const idx, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScore > *
        """
        return _oegraphsim.OEFastFPDatabase_GetSortedScores(self, *args)


    def GetRawScores(self, *args) -> "OESystem::OEIterBase< double > *":
        """
        GetRawScores(OEFastFPDatabase self, OEFingerPrint fp, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< double >
        GetRawScores(OEFastFPDatabase self, OEMolBase mol, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< double >
        GetRawScores(OEFastFPDatabase self, size_t const fpidx, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< double > *
        """
        return _oegraphsim.OEFastFPDatabase_GetRawScores(self, *args)


    def GetAllScores(self, opts: 'OEFPDatabaseOptions') -> "OESystem::OEIterBase< float > *":
        """GetAllScores(OEFastFPDatabase self, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< float > *"""
        return _oegraphsim.OEFastFPDatabase_GetAllScores(self, opts)


    def GetHistogram(self, opts: 'OEFPDatabaseOptions', nrbins: 'size_t'=200) -> "OEGraphSim::OEFPHistogram":
        """
        GetHistogram(OEFastFPDatabase self, OEFPDatabaseOptions opts, size_t nrbins=200) -> OEFPHistogram
        GetHistogram(OEFastFPDatabase self, OEFPDatabaseOptions opts) -> OEFPHistogram
        """
        return _oegraphsim.OEFastFPDatabase_GetHistogram(self, opts, nrbins)


    def GetVariogram(self, obsdata: 'OEFloatVector', opts: 'OEFPDatabaseOptions', nrbins: 'size_t'=200) -> "OEGraphSim::OEFPVariogram":
        """
        GetVariogram(OEFastFPDatabase self, OEFloatVector obsdata, OEFPDatabaseOptions opts, size_t nrbins=200) -> OEFPVariogram
        GetVariogram(OEFastFPDatabase self, OEFloatVector obsdata, OEFPDatabaseOptions opts) -> OEFPVariogram
        """
        return _oegraphsim.OEFastFPDatabase_GetVariogram(self, obsdata, opts, nrbins)


    def GetSparseMatrix(self, opts: 'OEFPDatabaseOptions') -> "OESystem::OEIterBase< OEGraphSim::OESimScorePair > *":
        """GetSparseMatrix(OEFastFPDatabase self, OEFPDatabaseOptions opts) -> OESystem::OEIterBase< OEGraphSim::OESimScorePair > *"""
        return _oegraphsim.OEFastFPDatabase_GetSparseMatrix(self, opts)

OEFastFPDatabase_swigregister = _oegraphsim.OEFastFPDatabase_swigregister
OEFastFPDatabase_swigregister(OEFastFPDatabase)


def GetSWIG_NewPointerObj(*args) -> "PyObject *":
    """
    GetSWIG_NewPointerObj(OEAtomBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEBondBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEMolBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEConfBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETransBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OENbrs arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAltLocation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAltGroup arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESequenceAlignment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERole arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(std::string const & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(std::string & arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OERotamer arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OETorsion arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColor arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEColorStop arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEGroupBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAtomBondSet arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESubSearch arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFragmentConnection arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHintTypeBase arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEInteractionHint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierResidue arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierFragment arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEHierChain arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEPlaceHydrogensMoverNote arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEAnnotation arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFuzzy arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESimScore arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OESimScorePair arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFingerPrint arg, bool owned) -> PyObject
    GetSWIG_NewPointerObj(OEFPPattern arg, bool owned) -> PyObject *
    """
    return _oegraphsim.GetSWIG_NewPointerObj(*args)
class OEFPPattern(oechem.OEAtomBondSet):
    """Proxy of C++ OEGraphSim::OEFPPattern class."""

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

    def __init__(self, atoms: 'OEAtomIter', bonds: 'OEBondIter', smarts: 'std::string const &', unhashed: 'unsigned int', setbit: 'unsigned int'):
        """__init__(OEGraphSim::OEFPPattern self, OEAtomIter atoms, OEBondIter bonds, std::string const & smarts, unsigned int unhashed, unsigned int setbit) -> OEFPPattern"""
        this = _oegraphsim.new_OEFPPattern(atoms, bonds, smarts, unhashed, setbit)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFPPattern
    __del__ = lambda self: None

    def GetSmarts(self) -> "std::string":
        """GetSmarts(OEFPPattern self) -> std::string"""
        return _oegraphsim.OEFPPattern_GetSmarts(self)


    def GetUnhashed(self) -> "unsigned int":
        """GetUnhashed(OEFPPattern self) -> unsigned int"""
        return _oegraphsim.OEFPPattern_GetUnhashed(self)


    def GetBit(self) -> "unsigned int":
        """GetBit(OEFPPattern self) -> unsigned int"""
        return _oegraphsim.OEFPPattern_GetBit(self)

OEFPPattern_swigregister = _oegraphsim.OEFPPattern_swigregister
OEFPPattern_swigregister(OEFPPattern)

class OEFPPatternIter(object):
    """Proxy of C++ OESystem::OEIter<(OEGraphSim::OEFPPattern)> class."""

    thisown = _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<(OEGraphSim::OEFPPattern)> self) -> OEFPPatternIter
        __init__(OESystem::OEIter<(OEGraphSim::OEFPPattern)> self, OEFPPatternIter rhs) -> OEFPPatternIter
        __init__(OESystem::OEIter<(OEGraphSim::OEFPPattern)> self, OESystem::OEIterBase< OEGraphSim::OEFPPattern > * rhs) -> OEFPPatternIter
        __init__(OESystem::OEIter<(OEGraphSim::OEFPPattern)> self, OESystem::OEIterBase< OESystem::OEIter< OEGraphSim::OEFPPattern >::NonConstA > * rhs) -> OEFPPatternIter
        """
        this = _oegraphsim.new_OEFPPatternIter(*args)
        try:
            self.this.append(this)
        except Exception:
            self.this = this
    __swig_destroy__ = _oegraphsim.delete_OEFPPatternIter
    __del__ = lambda self: None

    def Copy(self) -> "OESystem::OEIterBase< OEGraphSim::OEFPPattern > *":
        """Copy(OEFPPatternIter self) -> OESystem::OEIterBase< OEGraphSim::OEFPPattern > *"""
        return _oegraphsim.OEFPPatternIter_Copy(self)


    def Push(self, *args) -> "void":
        """
        Push(OEFPPatternIter self, OESystem::OEIterBase< OEGraphSim::OEFPPattern > * ib)
        Push(OEFPPatternIter self, OEFPPatternIter iter)
        """
        return _oegraphsim.OEFPPatternIter_Push(self, *args)


    def Sort(self, sort_criterion: 'OESystem::OEBinaryPredicate< OEGraphSim::OEFPPattern,OEGraphSim::OEFPPattern > const &') -> "void":
        """Sort(OEFPPatternIter self, OESystem::OEBinaryPredicate< OEGraphSim::OEFPPattern,OEGraphSim::OEFPPattern > const & sort_criterion)"""
        return _oegraphsim.OEFPPatternIter_Sort(self, sort_criterion)


    def ToFirst(self) -> "OESystem::OEIter< OEGraphSim::OEFPPattern > &":
        """ToFirst(OEFPPatternIter self) -> OEFPPatternIter"""
        return _oegraphsim.OEFPPatternIter_ToFirst(self)


    def ToLast(self) -> "OESystem::OEIter< OEGraphSim::OEFPPattern > &":
        """ToLast(OEFPPatternIter self) -> OEFPPatternIter"""
        return _oegraphsim.OEFPPatternIter_ToLast(self)


    def __ref__(self) -> "OEGraphSim::OEFPPattern &":
        """__ref__(OEFPPatternIter self) -> OEFPPattern"""
        return _oegraphsim.OEFPPatternIter___ref__(self)


    def IsValid(self):
      return _oegraphsim.OEFPPatternIter___nonzero__(self)



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



    def next(self) -> "PyObject *":
        """next(OEFPPatternIter self) -> PyObject *"""
        return _oegraphsim.OEFPPatternIter_next(self)


    def Target(self) -> "OEGraphSim::OEFPPattern &":
        """Target(OEFPPatternIter self) -> OEFPPattern"""
        return _oegraphsim.OEFPPatternIter_Target(self)


    def Next(self, *args) -> "OESystem::OEIter< OEGraphSim::OEFPPattern > &":
        """
        Next(OEFPPatternIter self) -> OEFPPatternIter
        Next(OEFPPatternIter self, int i) -> OEFPPatternIter
        """
        return _oegraphsim.OEFPPatternIter_Next(self, *args)


    def Prev(self, *args) -> "OESystem::OEIter< OEGraphSim::OEFPPattern > &":
        """
        Prev(OEFPPatternIter self) -> OEFPPatternIter
        Prev(OEFPPatternIter self, int i) -> OEFPPatternIter
        """
        return _oegraphsim.OEFPPatternIter_Prev(self, *args)

OEFPPatternIter_swigregister = _oegraphsim.OEFPPatternIter_swigregister
OEFPPatternIter_swigregister(OEFPPatternIter)


def OEGetFPCoverage(mol: 'OEMolBase', fptype: 'OEFPTypeBase', unique: 'bool'=False) -> "OESystem::OEIterBase< OEChem::OEAtomBondSet > *":
    """
    OEGetFPCoverage(OEMolBase mol, OEFPTypeBase fptype, bool unique=False) -> OESystem::OEIterBase< OEChem::OEAtomBondSet >
    OEGetFPCoverage(OEMolBase mol, OEFPTypeBase fptype) -> OESystem::OEIterBase< OEChem::OEAtomBondSet > *
    """
    return _oegraphsim.OEGetFPCoverage(mol, fptype, unique)

def OEGetFPPatterns(mol: 'OEMolBase', fptype: 'OEFPTypeBase') -> "OESystem::OEIterBase< OEGraphSim::OEFPPattern > *":
    """OEGetFPPatterns(OEMolBase mol, OEFPTypeBase fptype) -> OESystem::OEIterBase< OEGraphSim::OEFPPattern > *"""
    return _oegraphsim.OEGetFPPatterns(mol, fptype)

def OEGetFPOverlap(qmol: 'OEMolBase', tmol: 'OEMolBase', fptype: 'OEFPTypeBase') -> "OESystem::OEIterBase< OEChem::OEMatchBase > *":
    """OEGetFPOverlap(OEMolBase qmol, OEMolBase tmol, OEFPTypeBase fptype) -> OESystem::OEIterBase< OEChem::OEMatchBase > *"""
    return _oegraphsim.OEGetFPOverlap(qmol, tmol, fptype)

_oegraphsim.OE_OEGRAPHSIM_VERSION_swigconstant(_oegraphsim)
OE_OEGRAPHSIM_VERSION = _oegraphsim.OE_OEGRAPHSIM_VERSION

def OEGraphSimGetRelease() -> "char const *":
    """OEGraphSimGetRelease() -> char const *"""
    return _oegraphsim.OEGraphSimGetRelease()

def OEGraphSimGetVersion() -> "unsigned int":
    """OEGraphSimGetVersion() -> unsigned int"""
    return _oegraphsim.OEGraphSimGetVersion()

def OEGraphSimGetArch() -> "char const *":
    """OEGraphSimGetArch() -> char const *"""
    return _oegraphsim.OEGraphSimGetArch()

def OEGraphSimGetPlatform() -> "char const *":
    """OEGraphSimGetPlatform() -> char const *"""
    return _oegraphsim.OEGraphSimGetPlatform()

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

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

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


