# 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 4.0.2
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.

from sys import version_info as _swig_python_version_info
if _swig_python_version_info < (2, 7, 0):
    raise RuntimeError("Python 2.7 or later required")


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

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

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

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

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

    _oestats = libs.OEGetModule('_oestats01001')
    return _oestats

_oestats = swig_import_helper()
del swig_import_helper

try:
    import builtins as __builtin__
except ImportError:
    import __builtin__

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


def _swig_setattr_nondynamic_instance_variable(set):
    def set_instance_attr(self, name, value):
        if name == "thisown":
            self.this.own(value)
        elif name == "this":
            set(self, name, value)
        elif hasattr(self, name) and isinstance(getattr(type(self), name), property):
            set(self, name, value)
        else:
            raise AttributeError("You cannot add instance attributes to %s" % self)
    return set_instance_attr


def _swig_setattr_nondynamic_class_variable(set):
    def set_class_attr(cls, name, value):
        if hasattr(cls, name) and not isinstance(getattr(cls, name), property):
            set(cls, name, value)
        else:
            raise AttributeError("You cannot add class attributes to %s" % cls)
    return set_class_attr


def _swig_add_metaclass(metaclass):
    """Class decorator for adding a metaclass to a SWIG wrapped class - a slimmed down version of six.add_metaclass"""
    def wrapper(cls):
        return metaclass(cls.__name__, cls.__bases__, cls.__dict__.copy())
    return wrapper


class _SwigNonDynamicMeta(type):
    """Meta class to enforce nondynamic attributes (no new attributes) for a class"""
    __setattr__ = _swig_setattr_nondynamic_class_variable(type.__setattr__)


import weakref

import openeye.oechem as oechem
OEKrigeKernelType_Linear = _oestats.OEKrigeKernelType_Linear

OEKrigeKernelType_Exponential = _oestats.OEKrigeKernelType_Exponential

OEKrigeKernelType_Gaussian = _oestats.OEKrigeKernelType_Gaussian

OEKrigeKernelType_Spherical = _oestats.OEKrigeKernelType_Spherical

OEKrigeKernelType_Cauchy = _oestats.OEKrigeKernelType_Cauchy

OEKrigeKernelType_Custom = _oestats.OEKrigeKernelType_Custom

KrigeUniqueResponseMethod_meanVal = _oestats.KrigeUniqueResponseMethod_meanVal

KrigeUniqueResponseMethod_minVal = _oestats.KrigeUniqueResponseMethod_minVal

KrigeUniqueResponseMethod_maxVal = _oestats.KrigeUniqueResponseMethod_maxVal

KrigeOptionDefaults_numLocal = _oestats.KrigeOptionDefaults_numLocal

KrigeOptionDefaults_includeUnmeasured = _oestats.KrigeOptionDefaults_includeUnmeasured

KrigeOptionDefaults_maxVariogramSize = _oestats.KrigeOptionDefaults_maxVariogramSize

KrigeOptionDefaults_predictTraining = _oestats.KrigeOptionDefaults_predictTraining

KrigeOptionDefaults_uniqueResponseMethod = _oestats.KrigeOptionDefaults_uniqueResponseMethod

class OEKrigeKernelBase(object):
    r"""Proxy of C++ OEStats::OEKrigeKernelBase class."""

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

    def GetName(self) -> "std::string":
        r"""GetName(OEKrigeKernelBase self) -> std::string"""
        return _oestats.OEKrigeKernelBase_GetName(self)

    def GetValue(self, distance: "double") -> "double":
        r"""GetValue(OEKrigeKernelBase self, double distance) -> double"""
        return _oestats.OEKrigeKernelBase_GetValue(self, distance)

    def GetRange(self) -> "double":
        r"""GetRange(OEKrigeKernelBase self) -> double"""
        return _oestats.OEKrigeKernelBase_GetRange(self)

    def GetNugget(self) -> "double":
        r"""GetNugget(OEKrigeKernelBase self) -> double"""
        return _oestats.OEKrigeKernelBase_GetNugget(self)

    def GetSill(self) -> "double":
        r"""GetSill(OEKrigeKernelBase self) -> double"""
        return _oestats.OEKrigeKernelBase_GetSill(self)

    def SetRange(self, range: "double") -> "OEStats::OEKrigeKernelBase &":
        r"""SetRange(OEKrigeKernelBase self, double range) -> OEKrigeKernelBase"""
        return _oestats.OEKrigeKernelBase_SetRange(self, range)

    def SetNugget(self, nugget: "double") -> "OEStats::OEKrigeKernelBase &":
        r"""SetNugget(OEKrigeKernelBase self, double nugget) -> OEKrigeKernelBase"""
        return _oestats.OEKrigeKernelBase_SetNugget(self, nugget)

    def SetSill(self, sill: "double") -> "OEStats::OEKrigeKernelBase &":
        r"""SetSill(OEKrigeKernelBase self, double sill) -> OEKrigeKernelBase"""
        return _oestats.OEKrigeKernelBase_SetSill(self, sill)

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


    __swig_destroy__ = _oestats.delete_OEKrigeKernelBase

    def __init__(self):
        r"""__init__(OEKrigeKernelBase self) -> OEKrigeKernelBase"""
        if self.__class__ == OEKrigeKernelBase:
            _self = None
        else:
            _self = self
        _oestats.OEKrigeKernelBase_swiginit(self, _oestats.new_OEKrigeKernelBase(_self, ))
    def __disown__(self):
        self.this.disown()
        _oestats.disown_OEKrigeKernelBase(self)
        return weakref.proxy(self)

# Register OEKrigeKernelBase in _oestats:
_oestats.OEKrigeKernelBase_swigregister(OEKrigeKernelBase)

class OEKrigeKernel(OEKrigeKernelBase):
    r"""Proxy of C++ OEStats::OEKrigeKernel class."""

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

    def GetName(self) -> "std::string":
        r"""GetName(OEKrigeKernel self) -> std::string"""
        return _oestats.OEKrigeKernel_GetName(self)

    def GetValue(self, distance: "double") -> "double":
        r"""GetValue(OEKrigeKernel self, double distance) -> double"""
        return _oestats.OEKrigeKernel_GetValue(self, distance)

    def GetRange(self) -> "double":
        r"""GetRange(OEKrigeKernel self) -> double"""
        return _oestats.OEKrigeKernel_GetRange(self)

    def GetNugget(self) -> "double":
        r"""GetNugget(OEKrigeKernel self) -> double"""
        return _oestats.OEKrigeKernel_GetNugget(self)

    def GetSill(self) -> "double":
        r"""GetSill(OEKrigeKernel self) -> double"""
        return _oestats.OEKrigeKernel_GetSill(self)

    def SetRange(self, range: "double") -> "OEStats::OEKrigeKernelBase &":
        r"""SetRange(OEKrigeKernel self, double range) -> OEKrigeKernelBase"""
        return _oestats.OEKrigeKernel_SetRange(self, range)

    def SetNugget(self, nugget: "double") -> "OEStats::OEKrigeKernelBase &":
        r"""SetNugget(OEKrigeKernel self, double nugget) -> OEKrigeKernelBase"""
        return _oestats.OEKrigeKernel_SetNugget(self, nugget)

    def SetSill(self, sill: "double") -> "OEStats::OEKrigeKernelBase &":
        r"""SetSill(OEKrigeKernel self, double sill) -> OEKrigeKernelBase"""
        return _oestats.OEKrigeKernel_SetSill(self, sill)

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



    def __init__(self, *args):
        r"""
        __init__(OEKrigeKernel self, unsigned int type=) -> OEKrigeKernel
        __init__(OEKrigeKernel self, OEKrigeKernelBase kernel) -> OEKrigeKernel
        """
        _oestats.OEKrigeKernel_swiginit(self, _oestats.new_OEKrigeKernel(*args))
    __swig_destroy__ = _oestats.delete_OEKrigeKernel

# Register OEKrigeKernel in _oestats:
_oestats.OEKrigeKernel_swigregister(OEKrigeKernel)

class OEVariogram(object):
    r"""Proxy of C++ OEStats::OEVariogram class."""

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

    def GetNumBins(self) -> "unsigned int":
        r"""GetNumBins(OEVariogram self) -> unsigned int"""
        return _oestats.OEVariogram_GetNumBins(self)

    def GetDistance(self, iBin: "unsigned int") -> "double":
        r"""GetDistance(OEVariogram self, unsigned int iBin) -> double"""
        return _oestats.OEVariogram_GetDistance(self, iBin)

    def GetSemivariance(self, iBin: "unsigned int") -> "double":
        r"""GetSemivariance(OEVariogram self, unsigned int iBin) -> double"""
        return _oestats.OEVariogram_GetSemivariance(self, iBin)

    def __init__(self, *args):
        r"""
        __init__(OEVariogram self) -> OEVariogram
        __init__(OEVariogram self, OEStats::OEVariogramBase * impl) -> OEVariogram
        __init__(OEVariogram self, OEVariogram rhs) -> OEVariogram
        """
        _oestats.OEVariogram_swiginit(self, _oestats.new_OEVariogram(*args))
    __swig_destroy__ = _oestats.delete_OEVariogram

# Register OEVariogram in _oestats:
_oestats.OEVariogram_swigregister(OEVariogram)


def OEFitKernel(kernel: "OEKrigeKernelBase", variogram: "OEVariogram") -> "double":
    r"""OEFitKernel(OEKrigeKernelBase kernel, OEVariogram variogram) -> double"""
    return _oestats.OEFitKernel(kernel, variogram)

def OEFitKernelPartial(kernel: "OEKrigeKernelBase", variogram: "OEVariogram", fracPoints: "double") -> "double":
    r"""OEFitKernelPartial(OEKrigeKernelBase kernel, OEVariogram variogram, double fracPoints) -> double"""
    return _oestats.OEFitKernelPartial(kernel, variogram, fracPoints)

def OEGetExperimentalVariance(arg1: "OEVariogram") -> "double":
    r"""OEGetExperimentalVariance(OEVariogram arg1) -> double"""
    return _oestats.OEGetExperimentalVariance(arg1)

def OEGetFitness(kernel: "OEKrigeKernelBase", variogram: "OEVariogram") -> "double":
    r"""OEGetFitness(OEKrigeKernelBase kernel, OEVariogram variogram) -> double"""
    return _oestats.OEGetFitness(kernel, variogram)
class OEGlobalKrigeOptions(object):
    r"""Proxy of C++ OEStats::OEGlobalKrigeOptions class."""

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

    def GetIncludeUnmeasured(self) -> "bool":
        r"""GetIncludeUnmeasured(OEGlobalKrigeOptions self) -> bool"""
        return _oestats.OEGlobalKrigeOptions_GetIncludeUnmeasured(self)

    def GetUniqueResponseMethod(self) -> "unsigned int":
        r"""GetUniqueResponseMethod(OEGlobalKrigeOptions self) -> unsigned int"""
        return _oestats.OEGlobalKrigeOptions_GetUniqueResponseMethod(self)

    def SetIncludeUnmeasured(self, *args) -> "OEStats::OEGlobalKrigeOptions &":
        r"""SetIncludeUnmeasured(OEGlobalKrigeOptions self, bool arg2=) -> OEGlobalKrigeOptions"""
        return _oestats.OEGlobalKrigeOptions_SetIncludeUnmeasured(self, *args)

    def SetUniqueResponseMethod(self, *args) -> "OEStats::OEGlobalKrigeOptions &":
        r"""SetUniqueResponseMethod(OEGlobalKrigeOptions self, unsigned int arg2=) -> OEGlobalKrigeOptions"""
        return _oestats.OEGlobalKrigeOptions_SetUniqueResponseMethod(self, *args)

    def __init__(self):
        r"""__init__(OEGlobalKrigeOptions self) -> OEGlobalKrigeOptions"""
        _oestats.OEGlobalKrigeOptions_swiginit(self, _oestats.new_OEGlobalKrigeOptions())
    __swig_destroy__ = _oestats.delete_OEGlobalKrigeOptions

# Register OEGlobalKrigeOptions in _oestats:
_oestats.OEGlobalKrigeOptions_swigregister(OEGlobalKrigeOptions)

class OELocalKrigeOptions(object):
    r"""Proxy of C++ OEStats::OELocalKrigeOptions class."""

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

    def GetIncludeUnmeasured(self) -> "bool":
        r"""GetIncludeUnmeasured(OELocalKrigeOptions self) -> bool"""
        return _oestats.OELocalKrigeOptions_GetIncludeUnmeasured(self)

    def GetUniqueResponseMethod(self) -> "unsigned int":
        r"""GetUniqueResponseMethod(OELocalKrigeOptions self) -> unsigned int"""
        return _oestats.OELocalKrigeOptions_GetUniqueResponseMethod(self)

    def GetNumLocal(self) -> "unsigned int":
        r"""GetNumLocal(OELocalKrigeOptions self) -> unsigned int"""
        return _oestats.OELocalKrigeOptions_GetNumLocal(self)

    def GetMaxVariogramSize(self) -> "unsigned int":
        r"""GetMaxVariogramSize(OELocalKrigeOptions self) -> unsigned int"""
        return _oestats.OELocalKrigeOptions_GetMaxVariogramSize(self)

    def GetPredictTraining(self) -> "bool":
        r"""GetPredictTraining(OELocalKrigeOptions self) -> bool"""
        return _oestats.OELocalKrigeOptions_GetPredictTraining(self)

    def SetIncludeUnmeasured(self, *args) -> "OEStats::OELocalKrigeOptions &":
        r"""SetIncludeUnmeasured(OELocalKrigeOptions self, bool arg2=) -> OELocalKrigeOptions"""
        return _oestats.OELocalKrigeOptions_SetIncludeUnmeasured(self, *args)

    def SetNumLocal(self, *args) -> "OEStats::OELocalKrigeOptions &":
        r"""SetNumLocal(OELocalKrigeOptions self, unsigned int arg2=) -> OELocalKrigeOptions"""
        return _oestats.OELocalKrigeOptions_SetNumLocal(self, *args)

    def SetUniqueResponseMethod(self, *args) -> "OEStats::OELocalKrigeOptions &":
        r"""SetUniqueResponseMethod(OELocalKrigeOptions self, unsigned int arg2=) -> OELocalKrigeOptions"""
        return _oestats.OELocalKrigeOptions_SetUniqueResponseMethod(self, *args)

    def SetMaxVariogramSize(self, *args) -> "OEStats::OELocalKrigeOptions &":
        r"""SetMaxVariogramSize(OELocalKrigeOptions self, unsigned int arg2=) -> OELocalKrigeOptions"""
        return _oestats.OELocalKrigeOptions_SetMaxVariogramSize(self, *args)

    def SetPredictTraining(self, *args) -> "OEStats::OELocalKrigeOptions &":
        r"""SetPredictTraining(OELocalKrigeOptions self, bool arg2=) -> OELocalKrigeOptions"""
        return _oestats.OELocalKrigeOptions_SetPredictTraining(self, *args)

    def __init__(self):
        r"""__init__(OELocalKrigeOptions self) -> OELocalKrigeOptions"""
        _oestats.OELocalKrigeOptions_swiginit(self, _oestats.new_OELocalKrigeOptions())
    __swig_destroy__ = _oestats.delete_OELocalKrigeOptions

# Register OELocalKrigeOptions in _oestats:
_oestats.OELocalKrigeOptions_swigregister(OELocalKrigeOptions)

class OEDefaultKrigeDistanceOptions(object):
    r"""Proxy of C++ OEStats::OEDefaultKrigeDistanceOptions class."""

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

    def GetMaxPathLength(self) -> "unsigned int":
        r"""GetMaxPathLength(OEDefaultKrigeDistanceOptions self) -> unsigned int"""
        return _oestats.OEDefaultKrigeDistanceOptions_GetMaxPathLength(self)

    def GetMinPathLength(self) -> "unsigned int":
        r"""GetMinPathLength(OEDefaultKrigeDistanceOptions self) -> unsigned int"""
        return _oestats.OEDefaultKrigeDistanceOptions_GetMinPathLength(self)

    def GetForcePathsOut(self) -> "bool":
        r"""GetForcePathsOut(OEDefaultKrigeDistanceOptions self) -> bool"""
        return _oestats.OEDefaultKrigeDistanceOptions_GetForcePathsOut(self)

    def GetWeightByLength(self) -> "bool":
        r"""GetWeightByLength(OEDefaultKrigeDistanceOptions self) -> bool"""
        return _oestats.OEDefaultKrigeDistanceOptions_GetWeightByLength(self)

    def GetStereoAware(self) -> "bool":
        r"""GetStereoAware(OEDefaultKrigeDistanceOptions self) -> bool"""
        return _oestats.OEDefaultKrigeDistanceOptions_GetStereoAware(self)

    def SetMaxPathLength(self, arg2: "unsigned int") -> "OEStats::OEDefaultKrigeDistanceOptions &":
        r"""SetMaxPathLength(OEDefaultKrigeDistanceOptions self, unsigned int arg2) -> OEDefaultKrigeDistanceOptions"""
        return _oestats.OEDefaultKrigeDistanceOptions_SetMaxPathLength(self, arg2)

    def SetMinPathLength(self, arg2: "unsigned int") -> "OEStats::OEDefaultKrigeDistanceOptions &":
        r"""SetMinPathLength(OEDefaultKrigeDistanceOptions self, unsigned int arg2) -> OEDefaultKrigeDistanceOptions"""
        return _oestats.OEDefaultKrigeDistanceOptions_SetMinPathLength(self, arg2)

    def SetForcePathsOut(self, arg2: "bool") -> "OEStats::OEDefaultKrigeDistanceOptions &":
        r"""SetForcePathsOut(OEDefaultKrigeDistanceOptions self, bool arg2) -> OEDefaultKrigeDistanceOptions"""
        return _oestats.OEDefaultKrigeDistanceOptions_SetForcePathsOut(self, arg2)

    def SetWeightByLength(self, arg2: "bool") -> "OEStats::OEDefaultKrigeDistanceOptions &":
        r"""SetWeightByLength(OEDefaultKrigeDistanceOptions self, bool arg2) -> OEDefaultKrigeDistanceOptions"""
        return _oestats.OEDefaultKrigeDistanceOptions_SetWeightByLength(self, arg2)

    def SetStereoAware(self, arg2: "bool") -> "OEStats::OEDefaultKrigeDistanceOptions &":
        r"""SetStereoAware(OEDefaultKrigeDistanceOptions self, bool arg2) -> OEDefaultKrigeDistanceOptions"""
        return _oestats.OEDefaultKrigeDistanceOptions_SetStereoAware(self, arg2)

    def GetImpl(self) -> "OEGraphSim::OEVseprOptions const *":
        r"""GetImpl(OEDefaultKrigeDistanceOptions self) -> OEGraphSim::OEVseprOptions const *"""
        return _oestats.OEDefaultKrigeDistanceOptions_GetImpl(self)

    def __init__(self, *args):
        r"""
        __init__(OEDefaultKrigeDistanceOptions self) -> OEDefaultKrigeDistanceOptions
        __init__(OEDefaultKrigeDistanceOptions self, OEDefaultKrigeDistanceOptions rhs) -> OEDefaultKrigeDistanceOptions
        """
        _oestats.OEDefaultKrigeDistanceOptions_swiginit(self, _oestats.new_OEDefaultKrigeDistanceOptions(*args))
    __swig_destroy__ = _oestats.delete_OEDefaultKrigeDistanceOptions

# Register OEDefaultKrigeDistanceOptions in _oestats:
_oestats.OEDefaultKrigeDistanceOptions_swigregister(OEDefaultKrigeDistanceOptions)

class OEMolKrigeResult(object):
    r"""Proxy of C++ OEStats::OEMolKrigeResult class."""

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

    def Valid(self) -> "bool":
        r"""Valid(OEMolKrigeResult self) -> bool"""
        return _oestats.OEMolKrigeResult_Valid(self)

    def GetResponse(self) -> "double":
        r"""GetResponse(OEMolKrigeResult self) -> double"""
        return _oestats.OEMolKrigeResult_GetResponse(self)

    def GetVariance(self) -> "double":
        r"""GetVariance(OEMolKrigeResult self) -> double"""
        return _oestats.OEMolKrigeResult_GetVariance(self)

    def GetAtomContribution(self, *args) -> "double":
        r"""
        GetAtomContribution(OEMolKrigeResult self, OEAtomBase atom) -> double
        GetAtomContribution(OEMolKrigeResult self, OEAtomBase atom) -> double
        GetAtomContribution(OEMolKrigeResult self, OEAtomBase atom, double baseline) -> double
        GetAtomContribution(OEMolKrigeResult self, OEAtomBase atom, double baseline) -> double
        """
        return _oestats.OEMolKrigeResult_GetAtomContribution(self, *args)

    def GetKernel(self) -> "OEStats::OEKrigeKernel":
        r"""GetKernel(OEMolKrigeResult self) -> OEKrigeKernel"""
        return _oestats.OEMolKrigeResult_GetKernel(self)

    def GetVariogram(self) -> "OEStats::OEVariogram":
        r"""GetVariogram(OEMolKrigeResult self) -> OEVariogram"""
        return _oestats.OEMolKrigeResult_GetVariogram(self)

    def GetNumElements(self) -> "unsigned int":
        r"""GetNumElements(OEMolKrigeResult self) -> unsigned int"""
        return _oestats.OEMolKrigeResult_GetNumElements(self)

    def GetElementDistance(self, iElement: "unsigned int") -> "double":
        r"""GetElementDistance(OEMolKrigeResult self, unsigned int iElement) -> double"""
        return _oestats.OEMolKrigeResult_GetElementDistance(self, iElement)

    def GetElementWeight(self, iElement: "unsigned int") -> "double":
        r"""GetElementWeight(OEMolKrigeResult self, unsigned int iElement) -> double"""
        return _oestats.OEMolKrigeResult_GetElementWeight(self, iElement)

    def GetElementResponse(self, iElement: "unsigned int") -> "double":
        r"""GetElementResponse(OEMolKrigeResult self, unsigned int iElement) -> double"""
        return _oestats.OEMolKrigeResult_GetElementResponse(self, iElement)

    def GetElementIsUnmeasured(self, iElement: "unsigned int") -> "bool":
        r"""GetElementIsUnmeasured(OEMolKrigeResult self, unsigned int iElement) -> bool"""
        return _oestats.OEMolKrigeResult_GetElementIsUnmeasured(self, iElement)

    def GetElement(self, iElement: "unsigned int") -> "OEChem::OEMolBase const &":
        r"""GetElement(OEMolKrigeResult self, unsigned int iElement) -> OEMolBase"""
        return _oestats.OEMolKrigeResult_GetElement(self, iElement)

    def GetTrainingResponses(self, incUnmeasured: "bool"=True) -> "OESystem::OEIterBase< double > *":
        r"""GetTrainingResponses(OEMolKrigeResult self, bool incUnmeasured=True) -> OESystem::OEIterBase< double >"""
        return _oestats.OEMolKrigeResult_GetTrainingResponses(self, incUnmeasured)

    def __init__(self, *args):
        r"""
        __init__(OEMolKrigeResult self) -> OEMolKrigeResult
        __init__(OEMolKrigeResult self, OEStats::OEMolKrigeResultImpl * impl) -> OEMolKrigeResult
        __init__(OEMolKrigeResult self, OEMolKrigeResult rhs) -> OEMolKrigeResult
        """
        _oestats.OEMolKrigeResult_swiginit(self, _oestats.new_OEMolKrigeResult(*args))
    __swig_destroy__ = _oestats.delete_OEMolKrigeResult

# Register OEMolKrigeResult in _oestats:
_oestats.OEMolKrigeResult_swigregister(OEMolKrigeResult)


def OEProbabilityLessThan(arg1: "OEMolKrigeResult", val: "double") -> "double":
    r"""OEProbabilityLessThan(OEMolKrigeResult arg1, double val) -> double"""
    return _oestats.OEProbabilityLessThan(arg1, val)

def OEProbabilityGreaterThan(arg1: "OEMolKrigeResult", val: "double") -> "double":
    r"""OEProbabilityGreaterThan(OEMolKrigeResult arg1, double val) -> double"""
    return _oestats.OEProbabilityGreaterThan(arg1, val)

def OEProbabilityBetween(arg1: "OEMolKrigeResult", val1: "double", val2: "double") -> "double":
    r"""OEProbabilityBetween(OEMolKrigeResult arg1, double val1, double val2) -> double"""
    return _oestats.OEProbabilityBetween(arg1, val1, val2)
class OEMolKrige(object):
    r"""Proxy of C++ OEStats::OEMolKrige class."""

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

    def AddTraining(self, *args) -> "bool":
        r"""
        AddTraining(OEMolKrige self, OEMolBase arg2, double response) -> bool
        AddTraining(OEMolKrige self, OEMCMolBase arg2, double response) -> bool
        """
        return _oestats.OEMolKrige_AddTraining(self, *args)

    def AddUnmeasuredTraining(self, *args) -> "bool":
        r"""
        AddUnmeasuredTraining(OEMolKrige self, OEMolBase arg2, double response) -> bool
        AddUnmeasuredTraining(OEMolKrige self, OEMCMolBase arg2, double response) -> bool
        """
        return _oestats.OEMolKrige_AddUnmeasuredTraining(self, *args)

    def Train(self, *args) -> "bool":
        r"""
        Train(OEMolKrige self) -> bool
        Train(OEMolKrige self, OEKrigeKernel arg2) -> bool
        """
        return _oestats.OEMolKrige_Train(self, *args)

    def TrainFixed(self, arg2: "OEKrigeKernel") -> "bool":
        r"""TrainFixed(OEMolKrige self, OEKrigeKernel arg2) -> bool"""
        return _oestats.OEMolKrige_TrainFixed(self, arg2)

    def GetResult(self, *args) -> "OEStats::OEMolKrigeResult":
        r"""
        GetResult(OEMolKrige self, OEMolBase arg2) -> OEMolKrigeResult
        GetResult(OEMolKrige self, OEMolBase arg2) -> OEMolKrigeResult
        GetResult(OEMolKrige self, OEMCMolBase arg2) -> OEMolKrigeResult
        GetResult(OEMolKrige self, OEMCMolBase arg2) -> OEMolKrigeResult
        """
        return _oestats.OEMolKrige_GetResult(self, *args)

    def GetVariogram(self, *args) -> "OEStats::OEVariogram":
        r"""
        GetVariogram(OEMolKrige self) -> OEVariogram
        GetVariogram(OEMolKrige self) -> OEVariogram
        """
        return _oestats.OEMolKrige_GetVariogram(self, *args)

    def Clear(self) -> "void":
        r"""Clear(OEMolKrige self)"""
        return _oestats.OEMolKrige_Clear(self)

    def __init__(self, *args):
        r"""
        __init__(OEMolKrige self, OEGlobalKrigeOptions arg2=OEStats::OEGlobalKrigeOptions()) -> OEMolKrige
        __init__(OEMolKrige self, OELocalKrigeOptions arg2) -> OEMolKrige
        __init__(OEMolKrige self, OEDefaultKrigeDistanceOptions arg2, OEGlobalKrigeOptions arg3=OEStats::OEGlobalKrigeOptions()) -> OEMolKrige
        __init__(OEMolKrige self, OEDefaultKrigeDistanceOptions arg2, OELocalKrigeOptions arg3) -> OEMolKrige
        __init__(OEMolKrige self, OEMolPropertyList trendPropFxn, OEGlobalKrigeOptions arg3=OEStats::OEGlobalKrigeOptions()) -> OEMolKrige
        __init__(OEMolKrige self, OEMolPropertyList trendPropFxn, OELocalKrigeOptions arg3) -> OEMolKrige
        __init__(OEMolKrige self, OEDefaultKrigeDistanceOptions arg2, OEMolPropertyList trendPropFxn, OEGlobalKrigeOptions arg4=OEStats::OEGlobalKrigeOptions()) -> OEMolKrige
        __init__(OEMolKrige self, OEDefaultKrigeDistanceOptions arg2, OEMolPropertyList trendPropFxn, OELocalKrigeOptions arg4) -> OEMolKrige
        __init__(OEMolKrige self, OEMolKrigeDistFxn distFxn, OEGlobalKrigeOptions arg3=OEStats::OEGlobalKrigeOptions()) -> OEMolKrige
        __init__(OEMolKrige self, OEMolKrigeDistFxn distFxn, OELocalKrigeOptions arg3) -> OEMolKrige
        __init__(OEMolKrige self, OEMolKrigeDistFxn distFxn, OEMolPropertyList trendPropFxn, OEGlobalKrigeOptions arg4=OEStats::OEGlobalKrigeOptions()) -> OEMolKrige
        __init__(OEMolKrige self, OEMolKrigeDistFxn distFxn, OEMolPropertyList trendPropFxn, OELocalKrigeOptions arg4) -> OEMolKrige
        __init__(OEMolKrige self, OEMolKrige rhs) -> OEMolKrige
        """
        _oestats.OEMolKrige_swiginit(self, _oestats.new_OEMolKrige(*args))
    __swig_destroy__ = _oestats.delete_OEMolKrige

# Register OEMolKrige in _oestats:
_oestats.OEMolKrige_swigregister(OEMolKrige)

class OEMolKrigeDistFxn(object):
    r"""Proxy of C++ OESystem::OEBinaryFunction< OEChem::OEMolBase,OEChem::OEMolBase,double,true,true > class."""

    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
    __repr__ = _swig_repr
    __swig_destroy__ = _oestats.delete_OEMolKrigeDistFxn

    def __call__(self, a1: "OEMolBase", a2: "OEMolBase") -> "double":
        r"""__call__(OEMolKrigeDistFxn self, OEMolBase a1, OEMolBase a2) -> double"""
        return _oestats.OEMolKrigeDistFxn___call__(self, a1, a2)

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



    def __init__(self):
        r"""__init__(OEMolKrigeDistFxn self) -> OEMolKrigeDistFxn"""
        if self.__class__ == OEMolKrigeDistFxn:
            _self = None
        else:
            _self = self
        _oestats.OEMolKrigeDistFxn_swiginit(self, _oestats.new_OEMolKrigeDistFxn(_self, ))
    def __disown__(self):
        self.this.disown()
        _oestats.disown_OEMolKrigeDistFxn(self)
        return weakref.proxy(self)

# Register OEMolKrigeDistFxn in _oestats:
_oestats.OEMolKrigeDistFxn_swigregister(OEMolKrigeDistFxn)

class OEMolKrigeDefaultDistFxn(OEMolKrigeDistFxn):
    r"""Proxy of C++ OEStats::OEMolKrigeDefaultDistFxn class."""

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

    def __call__(self, arg2: "OEMolBase", arg3: "OEMolBase") -> "double":
        r"""__call__(OEMolKrigeDefaultDistFxn self, OEMolBase arg2, OEMolBase arg3) -> double"""
        return _oestats.OEMolKrigeDefaultDistFxn___call__(self, arg2, arg3)

    def PrepMol(self, arg2: "OEMolBase") -> "bool":
        r"""PrepMol(OEMolKrigeDefaultDistFxn self, OEMolBase arg2) -> bool"""
        return _oestats.OEMolKrigeDefaultDistFxn_PrepMol(self, arg2)

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



    def __init__(self, *args):
        r"""__init__(OEMolKrigeDefaultDistFxn self, OEDefaultKrigeDistanceOptions arg2=OEStats::OEDefaultKrigeDistanceOptions()) -> OEMolKrigeDefaultDistFxn"""
        _oestats.OEMolKrigeDefaultDistFxn_swiginit(self, _oestats.new_OEMolKrigeDefaultDistFxn(*args))
    __swig_destroy__ = _oestats.delete_OEMolKrigeDefaultDistFxn

# Register OEMolKrigeDefaultDistFxn in _oestats:
_oestats.OEMolKrigeDefaultDistFxn_swigregister(OEMolKrigeDefaultDistFxn)

class OEMolKrigeGraphSimDistFxn(OEMolKrigeDistFxn):
    r"""Proxy of C++ OEStats::OEMolKrigeGraphSimDistFxn class."""

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

    def __call__(self, arg2: "OEMolBase", arg3: "OEMolBase") -> "double":
        r"""__call__(OEMolKrigeGraphSimDistFxn self, OEMolBase arg2, OEMolBase arg3) -> double"""
        return _oestats.OEMolKrigeGraphSimDistFxn___call__(self, arg2, arg3)

    def PrepMol(self, arg2: "OEMolBase") -> "bool":
        r"""PrepMol(OEMolKrigeGraphSimDistFxn self, OEMolBase arg2) -> bool"""
        return _oestats.OEMolKrigeGraphSimDistFxn_PrepMol(self, arg2)

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



    def __init__(self, *args):
        r"""__init__(OEMolKrigeGraphSimDistFxn self, unsigned int fpType=OEGraphSim::OEFPType::Path) -> OEMolKrigeGraphSimDistFxn"""
        _oestats.OEMolKrigeGraphSimDistFxn_swiginit(self, _oestats.new_OEMolKrigeGraphSimDistFxn(*args))
    __swig_destroy__ = _oestats.delete_OEMolKrigeGraphSimDistFxn

# Register OEMolKrigeGraphSimDistFxn in _oestats:
_oestats.OEMolKrigeGraphSimDistFxn_swigregister(OEMolKrigeGraphSimDistFxn)

class OEKrigeReportOptions(object):
    r"""Proxy of C++ OEStats::OEKrigeReportOptions class."""

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

    def SetTitle(self, title: "std::string") -> "void":
        r"""SetTitle(OEKrigeReportOptions self, std::string title)"""
        return _oestats.OEKrigeReportOptions_SetTitle(self, title)

    def SetResponseName(self, name: "std::string") -> "void":
        r"""SetResponseName(OEKrigeReportOptions self, std::string name)"""
        return _oestats.OEKrigeReportOptions_SetResponseName(self, name)

    def SetResponseSignificantFigures(self, arg2: "unsigned int") -> "void":
        r"""SetResponseSignificantFigures(OEKrigeReportOptions self, unsigned int arg2)"""
        return _oestats.OEKrigeReportOptions_SetResponseSignificantFigures(self, arg2)

    def SetShowConfidence(self, show: "bool") -> "void":
        r"""SetShowConfidence(OEKrigeReportOptions self, bool show)"""
        return _oestats.OEKrigeReportOptions_SetShowConfidence(self, show)

    def SetUnlog(self, unlog: "bool") -> "void":
        r"""SetUnlog(OEKrigeReportOptions self, bool unlog)"""
        return _oestats.OEKrigeReportOptions_SetUnlog(self, unlog)

    def SetContributionPositiveColor(self, arg2: "OEColor") -> "void":
        r"""SetContributionPositiveColor(OEKrigeReportOptions self, OEColor arg2)"""
        return _oestats.OEKrigeReportOptions_SetContributionPositiveColor(self, arg2)

    def SetContributionNegativeColor(self, arg2: "OEColor") -> "void":
        r"""SetContributionNegativeColor(OEKrigeReportOptions self, OEColor arg2)"""
        return _oestats.OEKrigeReportOptions_SetContributionNegativeColor(self, arg2)

    def SetContributionPositiveLabel(self, arg2: "std::string") -> "void":
        r"""SetContributionPositiveLabel(OEKrigeReportOptions self, std::string arg2)"""
        return _oestats.OEKrigeReportOptions_SetContributionPositiveLabel(self, arg2)

    def SetContributionNegativeLabel(self, arg2: "std::string") -> "void":
        r"""SetContributionNegativeLabel(OEKrigeReportOptions self, std::string arg2)"""
        return _oestats.OEKrigeReportOptions_SetContributionNegativeLabel(self, arg2)

    def SetContributionBaseline(self, baseline: "double") -> "void":
        r"""SetContributionBaseline(OEKrigeReportOptions self, double baseline)"""
        return _oestats.OEKrigeReportOptions_SetContributionBaseline(self, baseline)

    def PushSDProperty(self, *args) -> "void":
        r"""
        PushSDProperty(OEKrigeReportOptions self, std::string tag)
        PushSDProperty(OEKrigeReportOptions self, std::string tag, std::string name)
        """
        return _oestats.OEKrigeReportOptions_PushSDProperty(self, *args)

    def PushProperty(self, arg2: "OEMolPropertyFxn", name: "std::string", sigFigs: "unsigned int"=4) -> "void":
        r"""PushProperty(OEKrigeReportOptions self, OEMolPropertyFxn arg2, std::string name, unsigned int sigFigs=4)"""
        return _oestats.OEKrigeReportOptions_PushProperty(self, arg2, name, sigFigs)

    def PushClassificationBoundry(self, value: "double") -> "void":
        r"""PushClassificationBoundry(OEKrigeReportOptions self, double value)"""
        return _oestats.OEKrigeReportOptions_PushClassificationBoundry(self, value)

    def PushClassificationColor(self, color: "OEColor") -> "void":
        r"""PushClassificationColor(OEKrigeReportOptions self, OEColor color)"""
        return _oestats.OEKrigeReportOptions_PushClassificationColor(self, color)

    def SetShowKrigeDetails(self, show: "bool") -> "void":
        r"""SetShowKrigeDetails(OEKrigeReportOptions self, bool show)"""
        return _oestats.OEKrigeReportOptions_SetShowKrigeDetails(self, show)

    def GetTitle(self) -> "std::string":
        r"""GetTitle(OEKrigeReportOptions self) -> std::string"""
        return _oestats.OEKrigeReportOptions_GetTitle(self)

    def GetResponseName(self) -> "std::string":
        r"""GetResponseName(OEKrigeReportOptions self) -> std::string"""
        return _oestats.OEKrigeReportOptions_GetResponseName(self)

    def GetResponseSignificantFigures(self) -> "unsigned int":
        r"""GetResponseSignificantFigures(OEKrigeReportOptions self) -> unsigned int"""
        return _oestats.OEKrigeReportOptions_GetResponseSignificantFigures(self)

    def GetShowConfidence(self) -> "bool":
        r"""GetShowConfidence(OEKrigeReportOptions self) -> bool"""
        return _oestats.OEKrigeReportOptions_GetShowConfidence(self)

    def GetUnlog(self) -> "bool":
        r"""GetUnlog(OEKrigeReportOptions self) -> bool"""
        return _oestats.OEKrigeReportOptions_GetUnlog(self)

    def GetContributionPositiveColor(self) -> "OESystem::OEColor":
        r"""GetContributionPositiveColor(OEKrigeReportOptions self) -> OEColor"""
        return _oestats.OEKrigeReportOptions_GetContributionPositiveColor(self)

    def GetContributionNegativeColor(self) -> "OESystem::OEColor":
        r"""GetContributionNegativeColor(OEKrigeReportOptions self) -> OEColor"""
        return _oestats.OEKrigeReportOptions_GetContributionNegativeColor(self)

    def GetContributionPositiveLabel(self) -> "std::string":
        r"""GetContributionPositiveLabel(OEKrigeReportOptions self) -> std::string"""
        return _oestats.OEKrigeReportOptions_GetContributionPositiveLabel(self)

    def GetContributionNegativeLabel(self) -> "std::string":
        r"""GetContributionNegativeLabel(OEKrigeReportOptions self) -> std::string"""
        return _oestats.OEKrigeReportOptions_GetContributionNegativeLabel(self)

    def GetHasContributionBaseline(self) -> "bool":
        r"""GetHasContributionBaseline(OEKrigeReportOptions self) -> bool"""
        return _oestats.OEKrigeReportOptions_GetHasContributionBaseline(self)

    def GetContributionBaseline(self) -> "double":
        r"""GetContributionBaseline(OEKrigeReportOptions self) -> double"""
        return _oestats.OEKrigeReportOptions_GetContributionBaseline(self)

    def GetNumProperties(self) -> "unsigned int":
        r"""GetNumProperties(OEKrigeReportOptions self) -> unsigned int"""
        return _oestats.OEKrigeReportOptions_GetNumProperties(self)

    def GetPropertyName(self, iProp: "unsigned int") -> "std::string":
        r"""GetPropertyName(OEKrigeReportOptions self, unsigned int iProp) -> std::string"""
        return _oestats.OEKrigeReportOptions_GetPropertyName(self, iProp)

    def GetPropertyValue(self, *args) -> "std::string":
        r"""
        GetPropertyValue(OEKrigeReportOptions self, unsigned int iProp, OEMolBase arg3) -> std::string
        GetPropertyValue(OEKrigeReportOptions self, unsigned int iProp, OEMCMolBase arg3) -> std::string
        """
        return _oestats.OEKrigeReportOptions_GetPropertyValue(self, *args)

    def GetNumClassifications(self) -> "unsigned int":
        r"""GetNumClassifications(OEKrigeReportOptions self) -> unsigned int"""
        return _oestats.OEKrigeReportOptions_GetNumClassifications(self)

    def GetClassificationColor(self, iClass: "unsigned int") -> "OESystem::OEColor":
        r"""GetClassificationColor(OEKrigeReportOptions self, unsigned int iClass) -> OEColor"""
        return _oestats.OEKrigeReportOptions_GetClassificationColor(self, iClass)

    def GetClassificationUpperBound(self, iClass: "unsigned int") -> "double":
        r"""GetClassificationUpperBound(OEKrigeReportOptions self, unsigned int iClass) -> double"""
        return _oestats.OEKrigeReportOptions_GetClassificationUpperBound(self, iClass)

    def GetClassificationLowerBound(self, iClass: "unsigned int") -> "double":
        r"""GetClassificationLowerBound(OEKrigeReportOptions self, unsigned int iClass) -> double"""
        return _oestats.OEKrigeReportOptions_GetClassificationLowerBound(self, iClass)

    def GetShowKrigeDetails(self) -> "bool":
        r"""GetShowKrigeDetails(OEKrigeReportOptions self) -> bool"""
        return _oestats.OEKrigeReportOptions_GetShowKrigeDetails(self)

    def ClearTitle(self) -> "void":
        r"""ClearTitle(OEKrigeReportOptions self)"""
        return _oestats.OEKrigeReportOptions_ClearTitle(self)

    def ClearContributionLabels(self) -> "void":
        r"""ClearContributionLabels(OEKrigeReportOptions self)"""
        return _oestats.OEKrigeReportOptions_ClearContributionLabels(self)

    def ClearContributionBaseline(self) -> "void":
        r"""ClearContributionBaseline(OEKrigeReportOptions self)"""
        return _oestats.OEKrigeReportOptions_ClearContributionBaseline(self)

    def ClearProperties(self) -> "void":
        r"""ClearProperties(OEKrigeReportOptions self)"""
        return _oestats.OEKrigeReportOptions_ClearProperties(self)

    def ClearClassifications(self) -> "void":
        r"""ClearClassifications(OEKrigeReportOptions self)"""
        return _oestats.OEKrigeReportOptions_ClearClassifications(self)

    def Clear(self) -> "void":
        r"""Clear(OEKrigeReportOptions self)"""
        return _oestats.OEKrigeReportOptions_Clear(self)

    def __init__(self, *args):
        r"""
        __init__(OEKrigeReportOptions self) -> OEKrigeReportOptions
        __init__(OEKrigeReportOptions self, OEKrigeReportOptions arg2) -> OEKrigeReportOptions
        """
        _oestats.OEKrigeReportOptions_swiginit(self, _oestats.new_OEKrigeReportOptions(*args))
    __swig_destroy__ = _oestats.delete_OEKrigeReportOptions

# Register OEKrigeReportOptions in _oestats:
_oestats.OEKrigeReportOptions_swigregister(OEKrigeReportOptions)


def OEKrigeRenderReport(*args) -> "bool":
    r"""
    OEKrigeRenderReport(OEDepict::OEImageBase & image, OEMolKrigeResult result, OEMolBase mol, OEKrigeReportOptions opts, unsigned int trainRows=0, unsigned int trainCols=0) -> bool
    OEKrigeRenderReport(OEDepict::OEImageBase & image, OEMolKrigeResult result, OEMCMolBase mol, OEKrigeReportOptions opts, unsigned int trainRows=0, unsigned int trainCols=0) -> bool
    OEKrigeRenderReport(std::string filename, OEMolKrigeResult result, OEMolBase mol, OEKrigeReportOptions opts=OEStats::OEKrigeReportOptions()) -> bool
    OEKrigeRenderReport(std::string filename, OEMolKrigeResult result, OEMCMolBase mol, OEKrigeReportOptions opts=OEStats::OEKrigeReportOptions()) -> bool
    """
    return _oestats.OEKrigeRenderReport(*args)
class OEMolLog10PropertyFxn(oechem.OEMolPropertyFxn):
    r"""Proxy of C++ OEStats::OEMolLog10PropertyFxn class."""

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

    def __init__(self, *args):
        r"""
        __init__(OEMolLog10PropertyFxn self, OEMolPropertyFxn fxn) -> OEMolLog10PropertyFxn
        __init__(OEMolLog10PropertyFxn self, OEMolLog10PropertyFxn prop) -> OEMolLog10PropertyFxn
        """
        _oestats.OEMolLog10PropertyFxn_swiginit(self, _oestats.new_OEMolLog10PropertyFxn(*args))

    def Has(self, *args) -> "bool":
        r"""
        Has(OEMolLog10PropertyFxn self, OEMolBase mol) -> bool
        Has(OEMolLog10PropertyFxn self, OEMCMolBase mol) -> bool
        """
        return _oestats.OEMolLog10PropertyFxn_Has(self, *args)

    def Get(self, *args) -> "double":
        r"""
        Get(OEMolLog10PropertyFxn self, OEMolBase mol) -> double
        Get(OEMolLog10PropertyFxn self, OEMCMolBase mol) -> double
        """
        return _oestats.OEMolLog10PropertyFxn_Get(self, *args)

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


    __swig_destroy__ = _oestats.delete_OEMolLog10PropertyFxn

# Register OEMolLog10PropertyFxn in _oestats:
_oestats.OEMolLog10PropertyFxn_swigregister(OEMolLog10PropertyFxn)

class OEMolecularWeightPropertyFxn(oechem.OEMolPropertyFxn):
    r"""Proxy of C++ OEStats::OEMolecularWeightPropertyFxn class."""

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

    def Has(self, *args) -> "bool":
        r"""
        Has(OEMolecularWeightPropertyFxn self, OEMolBase mol) -> bool
        Has(OEMolecularWeightPropertyFxn self, OEMCMolBase mol) -> bool
        """
        return _oestats.OEMolecularWeightPropertyFxn_Has(self, *args)

    def Get(self, *args) -> "double":
        r"""
        Get(OEMolecularWeightPropertyFxn self, OEMolBase mol) -> double
        Get(OEMolecularWeightPropertyFxn self, OEMCMolBase mol) -> double
        """
        return _oestats.OEMolecularWeightPropertyFxn_Get(self, *args)

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



    def __init__(self):
        r"""__init__(OEMolecularWeightPropertyFxn self) -> OEMolecularWeightPropertyFxn"""
        _oestats.OEMolecularWeightPropertyFxn_swiginit(self, _oestats.new_OEMolecularWeightPropertyFxn())
    __swig_destroy__ = _oestats.delete_OEMolecularWeightPropertyFxn

# Register OEMolecularWeightPropertyFxn in _oestats:
_oestats.OEMolecularWeightPropertyFxn_swigregister(OEMolecularWeightPropertyFxn)

OE_OESTATS_VERSION = _oestats.OE_OESTATS_VERSION


def OEStatsGetRelease() -> "char const *":
    r"""OEStatsGetRelease() -> char const *"""
    return _oestats.OEStatsGetRelease()

def OEStatsGetVersion() -> "unsigned int":
    r"""OEStatsGetVersion() -> unsigned int"""
    return _oestats.OEStatsGetVersion()

def OEStatsGetArch() -> "char const *":
    r"""OEStatsGetArch() -> char const *"""
    return _oestats.OEStatsGetArch()

def OEStatsGetPlatform() -> "char const *":
    r"""OEStatsGetPlatform() -> char const *"""
    return _oestats.OEStatsGetPlatform()

def OEStatsIsLicensed(feature: "char const *"=None, expdate: "unsigned int *"=None) -> "bool":
    r"""OEStatsIsLicensed(char const * feature=None, unsigned int * expdate=None) -> bool"""
    return _oestats.OEStatsIsLicensed(feature, expdate)

def OEStatsGetLicensee(*args) -> "std::string":
    r"""
    OEStatsGetLicensee(std::string & licensee) -> bool
    OEStatsGetLicensee() -> std::string
    """
    return _oestats.OEStatsGetLicensee(*args)

def OEStatsGetSite(*args) -> "std::string":
    r"""
    OEStatsGetSite(std::string & site) -> bool
    OEStatsGetSite() -> std::string
    """
    return _oestats.OEStatsGetSite(*args)


