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

# This wrapper is part of IMP,
# Copyright 2007-2021 IMP Inventors. All rights reserved.

from __future__ import print_function, division, absolute_import
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")

import _IMP_bayesianem

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

class IMP_BAYESIANEM_SwigPyIterator(object):
    r"""Proxy of C++ swig::IMP_BAYESIANEM_SwigPyIterator class."""

    thisown = 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__ = _IMP_bayesianem.delete_IMP_BAYESIANEM_SwigPyIterator

    def value(self):
        r"""value(IMP_BAYESIANEM_SwigPyIterator self) -> PyObject *"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_value(self)

    def incr(self, n=1):
        r"""incr(IMP_BAYESIANEM_SwigPyIterator self, size_t n=1) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        r"""decr(IMP_BAYESIANEM_SwigPyIterator self, size_t n=1) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_decr(self, n)

    def distance(self, x):
        r"""distance(IMP_BAYESIANEM_SwigPyIterator self, IMP_BAYESIANEM_SwigPyIterator x) -> ptrdiff_t"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_distance(self, x)

    def equal(self, x):
        r"""equal(IMP_BAYESIANEM_SwigPyIterator self, IMP_BAYESIANEM_SwigPyIterator x) -> bool"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_equal(self, x)

    def copy(self):
        r"""copy(IMP_BAYESIANEM_SwigPyIterator self) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_copy(self)

    def next(self):
        r"""next(IMP_BAYESIANEM_SwigPyIterator self) -> PyObject *"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_next(self)

    def __next__(self):
        r"""__next__(IMP_BAYESIANEM_SwigPyIterator self) -> PyObject *"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___next__(self)

    def previous(self):
        r"""previous(IMP_BAYESIANEM_SwigPyIterator self) -> PyObject *"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_previous(self)

    def advance(self, n):
        r"""advance(IMP_BAYESIANEM_SwigPyIterator self, ptrdiff_t n) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        r"""__eq__(IMP_BAYESIANEM_SwigPyIterator self, IMP_BAYESIANEM_SwigPyIterator x) -> bool"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        r"""__ne__(IMP_BAYESIANEM_SwigPyIterator self, IMP_BAYESIANEM_SwigPyIterator x) -> bool"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        r"""__iadd__(IMP_BAYESIANEM_SwigPyIterator self, ptrdiff_t n) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        r"""__isub__(IMP_BAYESIANEM_SwigPyIterator self, ptrdiff_t n) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        r"""__add__(IMP_BAYESIANEM_SwigPyIterator self, ptrdiff_t n) -> IMP_BAYESIANEM_SwigPyIterator"""
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        r"""
        __sub__(IMP_BAYESIANEM_SwigPyIterator self, ptrdiff_t n) -> IMP_BAYESIANEM_SwigPyIterator
        __sub__(IMP_BAYESIANEM_SwigPyIterator self, IMP_BAYESIANEM_SwigPyIterator x) -> ptrdiff_t
        """
        return _IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register IMP_BAYESIANEM_SwigPyIterator in _IMP_bayesianem:
_IMP_bayesianem.IMP_BAYESIANEM_SwigPyIterator_swigregister(IMP_BAYESIANEM_SwigPyIterator)


_value_types=[]
_object_types=[]
_raii_types=[]
_plural_types=[]

IMP_DEBUG = _IMP_bayesianem.IMP_DEBUG

IMP_RELEASE = _IMP_bayesianem.IMP_RELEASE

IMP_SILENT = _IMP_bayesianem.IMP_SILENT

IMP_PROGRESS = _IMP_bayesianem.IMP_PROGRESS

IMP_TERSE = _IMP_bayesianem.IMP_TERSE

IMP_VERBOSE = _IMP_bayesianem.IMP_VERBOSE

IMP_MEMORY = _IMP_bayesianem.IMP_MEMORY

IMP_NONE = _IMP_bayesianem.IMP_NONE

IMP_USAGE = _IMP_bayesianem.IMP_USAGE

IMP_INTERNAL = _IMP_bayesianem.IMP_INTERNAL

IMP_KERNEL_HAS_LOG4CXX = _IMP_bayesianem.IMP_KERNEL_HAS_LOG4CXX

IMP_COMPILER_HAS_AUTO = _IMP_bayesianem.IMP_COMPILER_HAS_AUTO

IMP_COMPILER_HAS_DEBUG_VECTOR = _IMP_bayesianem.IMP_COMPILER_HAS_DEBUG_VECTOR

IMP_COMPILER_HAS_UNIQUE_PTR = _IMP_bayesianem.IMP_COMPILER_HAS_UNIQUE_PTR

IMP_KERNEL_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_KERNEL_HAS_BOOST_RANDOM

IMP_KERNEL_HAS_NUMPY = _IMP_bayesianem.IMP_KERNEL_HAS_NUMPY

IMP_KERNEL_HAS_GPERFTOOLS = _IMP_bayesianem.IMP_KERNEL_HAS_GPERFTOOLS

IMP_KERNEL_HAS_TCMALLOC_HEAPCHECKER = _IMP_bayesianem.IMP_KERNEL_HAS_TCMALLOC_HEAPCHECKER

IMP_KERNEL_HAS_TCMALLOC_HEAPPROFILER = _IMP_bayesianem.IMP_KERNEL_HAS_TCMALLOC_HEAPPROFILER

IMPKERNEL_SHOW_WARNINGS = _IMP_bayesianem.IMPKERNEL_SHOW_WARNINGS


import sys
class _DirectorObjects(object):
    """@internal Simple class to keep references to director objects
       to prevent premature deletion."""
    def __init__(self):
        self._objects = []
    def register(self, obj):
        """Take a reference to a director object; will only work for
           refcounted C++ classes"""
        if hasattr(obj, 'get_ref_count'):
            self._objects.append(obj)
    def cleanup(self):
        """Only drop our reference and allow cleanup by Python if no other
           Python references exist (we hold 3 references: one in self._objects,
           one in x, and one in the argument list for getrefcount) *and* no
           other C++ references exist (the Python object always holds one)"""
        objs = [x for x in self._objects if sys.getrefcount(x) > 3 \
                                         or x.get_ref_count() > 1]
# Do in two steps so the references are kept until the end of the
# function (deleting references may trigger a fresh call to this method)
        self._objects = objs
    def get_object_count(self):
        """Get number of director objects (useful for testing only)"""
        return len(self._objects)
_director_objects = _DirectorObjects()

class _ostream(object):
    r"""Proxy of C++ std::ostream class."""

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

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

    def write(self, osa_buf):
        r"""write(_ostream self, char const * osa_buf)"""
        return _IMP_bayesianem._ostream_write(self, osa_buf)

# Register _ostream in _IMP_bayesianem:
_IMP_bayesianem._ostream_swigregister(_ostream)

IMP_COMPILER_HAS_OVERRIDE = _IMP_bayesianem.IMP_COMPILER_HAS_OVERRIDE

IMP_COMPILER_HAS_FINAL = _IMP_bayesianem.IMP_COMPILER_HAS_FINAL

IMP_HAS_NOEXCEPT = _IMP_bayesianem.IMP_HAS_NOEXCEPT

IMP_C_OPEN_BINARY = _IMP_bayesianem.IMP_C_OPEN_BINARY

import IMP
IMP_CGAL_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_CGAL_HAS_BOOST_FILESYSTEM

IMP_CGAL_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_CGAL_HAS_BOOST_PROGRAMOPTIONS

IMP_CGAL_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_CGAL_HAS_BOOST_RANDOM

IMP_CGAL_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_CGAL_HAS_BOOST_SYSTEM

IMP_CGAL_HAS_NUMPY = _IMP_bayesianem.IMP_CGAL_HAS_NUMPY

IMPCGAL_SHOW_WARNINGS = _IMP_bayesianem.IMPCGAL_SHOW_WARNINGS

import IMP.cgal
IMP_ALGEBRA_HAS_IMP_CGAL = _IMP_bayesianem.IMP_ALGEBRA_HAS_IMP_CGAL

IMP_ALGEBRA_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_ALGEBRA_HAS_BOOST_FILESYSTEM

IMP_ALGEBRA_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_ALGEBRA_HAS_BOOST_PROGRAMOPTIONS

IMP_ALGEBRA_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_ALGEBRA_HAS_BOOST_RANDOM

IMP_ALGEBRA_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_ALGEBRA_HAS_BOOST_SYSTEM

IMP_ALGEBRA_HAS_CGAL = _IMP_bayesianem.IMP_ALGEBRA_HAS_CGAL

IMP_ALGEBRA_HAS_NUMPY = _IMP_bayesianem.IMP_ALGEBRA_HAS_NUMPY

IMP_ALGEBRA_HAS_ANN = _IMP_bayesianem.IMP_ALGEBRA_HAS_ANN

IMPALGEBRA_SHOW_WARNINGS = _IMP_bayesianem.IMPALGEBRA_SHOW_WARNINGS

import IMP.algebra
IMP_DISPLAY_HAS_IMP_CGAL = _IMP_bayesianem.IMP_DISPLAY_HAS_IMP_CGAL

IMP_DISPLAY_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_DISPLAY_HAS_BOOST_FILESYSTEM

IMP_DISPLAY_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_DISPLAY_HAS_BOOST_PROGRAMOPTIONS

IMP_DISPLAY_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_DISPLAY_HAS_BOOST_RANDOM

IMP_DISPLAY_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_DISPLAY_HAS_BOOST_SYSTEM

IMP_DISPLAY_HAS_CGAL = _IMP_bayesianem.IMP_DISPLAY_HAS_CGAL

IMP_DISPLAY_HAS_NUMPY = _IMP_bayesianem.IMP_DISPLAY_HAS_NUMPY

IMPDISPLAY_SHOW_WARNINGS = _IMP_bayesianem.IMPDISPLAY_SHOW_WARNINGS

import IMP.display
IMP_SCORE_FUNCTOR_HAS_IMP_CGAL = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_IMP_CGAL

IMP_SCORE_FUNCTOR_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_BOOST_FILESYSTEM

IMP_SCORE_FUNCTOR_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_BOOST_PROGRAMOPTIONS

IMP_SCORE_FUNCTOR_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_BOOST_RANDOM

IMP_SCORE_FUNCTOR_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_BOOST_SYSTEM

IMP_SCORE_FUNCTOR_HAS_CGAL = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_CGAL

IMP_SCORE_FUNCTOR_HAS_HDF5 = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_HDF5

IMP_SCORE_FUNCTOR_HAS_NUMPY = _IMP_bayesianem.IMP_SCORE_FUNCTOR_HAS_NUMPY

IMPSCOREFUNCTOR_SHOW_WARNINGS = _IMP_bayesianem.IMPSCOREFUNCTOR_SHOW_WARNINGS

import IMP.score_functor
IMP_STATISTICS_HAS_IMP_CGAL = _IMP_bayesianem.IMP_STATISTICS_HAS_IMP_CGAL

IMP_STATISTICS_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_STATISTICS_HAS_BOOST_FILESYSTEM

IMP_STATISTICS_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_STATISTICS_HAS_BOOST_PROGRAMOPTIONS

IMP_STATISTICS_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_STATISTICS_HAS_BOOST_RANDOM

IMP_STATISTICS_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_STATISTICS_HAS_BOOST_SYSTEM

IMP_STATISTICS_HAS_CGAL = _IMP_bayesianem.IMP_STATISTICS_HAS_CGAL

IMP_STATISTICS_HAS_NUMPY = _IMP_bayesianem.IMP_STATISTICS_HAS_NUMPY

IMPSTATISTICS_SHOW_WARNINGS = _IMP_bayesianem.IMPSTATISTICS_SHOW_WARNINGS

import IMP.statistics
IMP_CORE_HAS_IMP_CGAL = _IMP_bayesianem.IMP_CORE_HAS_IMP_CGAL

IMP_CORE_HAS_IMP_KERNEL = _IMP_bayesianem.IMP_CORE_HAS_IMP_KERNEL

IMP_CORE_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_CORE_HAS_BOOST_FILESYSTEM

IMP_CORE_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_CORE_HAS_BOOST_PROGRAMOPTIONS

IMP_CORE_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_CORE_HAS_BOOST_RANDOM

IMP_CORE_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_CORE_HAS_BOOST_SYSTEM

IMP_CORE_HAS_CGAL = _IMP_bayesianem.IMP_CORE_HAS_CGAL

IMP_CORE_HAS_HDF5 = _IMP_bayesianem.IMP_CORE_HAS_HDF5

IMP_CORE_HAS_NUMPY = _IMP_bayesianem.IMP_CORE_HAS_NUMPY

IMPCORE_SHOW_WARNINGS = _IMP_bayesianem.IMPCORE_SHOW_WARNINGS

import IMP.core
IMP_CONTAINER_HAS_IMP_ALGEBRA = _IMP_bayesianem.IMP_CONTAINER_HAS_IMP_ALGEBRA

IMP_CONTAINER_HAS_IMP_CGAL = _IMP_bayesianem.IMP_CONTAINER_HAS_IMP_CGAL

IMP_CONTAINER_HAS_IMP_DISPLAY = _IMP_bayesianem.IMP_CONTAINER_HAS_IMP_DISPLAY

IMP_CONTAINER_HAS_IMP_KERNEL = _IMP_bayesianem.IMP_CONTAINER_HAS_IMP_KERNEL

IMP_CONTAINER_HAS_IMP_SCORE_FUNCTOR = _IMP_bayesianem.IMP_CONTAINER_HAS_IMP_SCORE_FUNCTOR

IMP_CONTAINER_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_CONTAINER_HAS_BOOST_FILESYSTEM

IMP_CONTAINER_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_CONTAINER_HAS_BOOST_PROGRAMOPTIONS

IMP_CONTAINER_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_CONTAINER_HAS_BOOST_RANDOM

IMP_CONTAINER_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_CONTAINER_HAS_BOOST_SYSTEM

IMP_CONTAINER_HAS_CGAL = _IMP_bayesianem.IMP_CONTAINER_HAS_CGAL

IMP_CONTAINER_HAS_HDF5 = _IMP_bayesianem.IMP_CONTAINER_HAS_HDF5

IMP_CONTAINER_HAS_NUMPY = _IMP_bayesianem.IMP_CONTAINER_HAS_NUMPY

IMP_CONTAINER_HAS_PYTHON_IHM = _IMP_bayesianem.IMP_CONTAINER_HAS_PYTHON_IHM

IMP_CONTAINER_HAS_GOOGLE_DENSE_HASH_MAP = _IMP_bayesianem.IMP_CONTAINER_HAS_GOOGLE_DENSE_HASH_MAP

IMP_CONTAINER_HAS_ROBIN_MAP = _IMP_bayesianem.IMP_CONTAINER_HAS_ROBIN_MAP

IMPCONTAINER_SHOW_WARNINGS = _IMP_bayesianem.IMPCONTAINER_SHOW_WARNINGS

import IMP.container
IMP_ATOM_HAS_IMP_CGAL = _IMP_bayesianem.IMP_ATOM_HAS_IMP_CGAL

IMP_ATOM_HAS_IMP_KERNEL = _IMP_bayesianem.IMP_ATOM_HAS_IMP_KERNEL

IMP_ATOM_HAS_IMP_SCORE_FUNCTOR = _IMP_bayesianem.IMP_ATOM_HAS_IMP_SCORE_FUNCTOR

IMP_ATOM_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_ATOM_HAS_BOOST_PROGRAMOPTIONS

IMP_ATOM_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_ATOM_HAS_BOOST_RANDOM

IMP_ATOM_HAS_BOOST_REGEX = _IMP_bayesianem.IMP_ATOM_HAS_BOOST_REGEX

IMP_ATOM_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_ATOM_HAS_BOOST_SYSTEM

IMP_ATOM_HAS_CGAL = _IMP_bayesianem.IMP_ATOM_HAS_CGAL

IMP_ATOM_HAS_HDF5 = _IMP_bayesianem.IMP_ATOM_HAS_HDF5

IMP_ATOM_HAS_NUMPY = _IMP_bayesianem.IMP_ATOM_HAS_NUMPY

IMP_ATOM_HAS_PYTHON_IHM = _IMP_bayesianem.IMP_ATOM_HAS_PYTHON_IHM

IMPATOM_SHOW_WARNINGS = _IMP_bayesianem.IMPATOM_SHOW_WARNINGS

IMP_ATOM_TYPE_INDEX = _IMP_bayesianem.IMP_ATOM_TYPE_INDEX

IMP_RESIDUE_TYPE_INDEX = _IMP_bayesianem.IMP_RESIDUE_TYPE_INDEX

IMP_HIERARCHY_TYPE_INDEX = _IMP_bayesianem.IMP_HIERARCHY_TYPE_INDEX

IMP_CHAIN_TYPE_INDEX = _IMP_bayesianem.IMP_CHAIN_TYPE_INDEX

import IMP.atom
IMP_EM_HAS_IMP_CGAL = _IMP_bayesianem.IMP_EM_HAS_IMP_CGAL

IMP_EM_HAS_IMP_CONTAINER = _IMP_bayesianem.IMP_EM_HAS_IMP_CONTAINER

IMP_EM_HAS_IMP_DISPLAY = _IMP_bayesianem.IMP_EM_HAS_IMP_DISPLAY

IMP_EM_HAS_IMP_SCORE_FUNCTOR = _IMP_bayesianem.IMP_EM_HAS_IMP_SCORE_FUNCTOR

IMP_EM_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_EM_HAS_BOOST_FILESYSTEM

IMP_EM_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_EM_HAS_BOOST_PROGRAMOPTIONS

IMP_EM_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_EM_HAS_BOOST_RANDOM

IMP_EM_HAS_BOOST_REGEX = _IMP_bayesianem.IMP_EM_HAS_BOOST_REGEX

IMP_EM_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_EM_HAS_BOOST_SYSTEM

IMP_EM_HAS_CGAL = _IMP_bayesianem.IMP_EM_HAS_CGAL

IMP_EM_HAS_HDF5 = _IMP_bayesianem.IMP_EM_HAS_HDF5

IMP_EM_HAS_NUMPY = _IMP_bayesianem.IMP_EM_HAS_NUMPY

IMP_EM_HAS_PYTHON_IHM = _IMP_bayesianem.IMP_EM_HAS_PYTHON_IHM

IMPEM_SHOW_WARNINGS = _IMP_bayesianem.IMPEM_SHOW_WARNINGS

import IMP.em
IMP_SAXS_HAS_IMP_CGAL = _IMP_bayesianem.IMP_SAXS_HAS_IMP_CGAL

IMP_SAXS_HAS_IMP_CONTAINER = _IMP_bayesianem.IMP_SAXS_HAS_IMP_CONTAINER

IMP_SAXS_HAS_IMP_DISPLAY = _IMP_bayesianem.IMP_SAXS_HAS_IMP_DISPLAY

IMP_SAXS_HAS_IMP_KERNEL = _IMP_bayesianem.IMP_SAXS_HAS_IMP_KERNEL

IMP_SAXS_HAS_IMP_SCORE_FUNCTOR = _IMP_bayesianem.IMP_SAXS_HAS_IMP_SCORE_FUNCTOR

IMP_SAXS_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_SAXS_HAS_BOOST_FILESYSTEM

IMP_SAXS_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_SAXS_HAS_BOOST_PROGRAMOPTIONS

IMP_SAXS_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_SAXS_HAS_BOOST_RANDOM

IMP_SAXS_HAS_BOOST_REGEX = _IMP_bayesianem.IMP_SAXS_HAS_BOOST_REGEX

IMP_SAXS_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_SAXS_HAS_BOOST_SYSTEM

IMP_SAXS_HAS_CGAL = _IMP_bayesianem.IMP_SAXS_HAS_CGAL

IMP_SAXS_HAS_HDF5 = _IMP_bayesianem.IMP_SAXS_HAS_HDF5

IMP_SAXS_HAS_NUMPY = _IMP_bayesianem.IMP_SAXS_HAS_NUMPY

IMP_SAXS_HAS_PYTHON_IHM = _IMP_bayesianem.IMP_SAXS_HAS_PYTHON_IHM

IMPSAXS_SHOW_WARNINGS = _IMP_bayesianem.IMPSAXS_SHOW_WARNINGS

import IMP.saxs
IMP_ISD_HAS_IMP_CGAL = _IMP_bayesianem.IMP_ISD_HAS_IMP_CGAL

IMP_ISD_HAS_IMP_DISPLAY = _IMP_bayesianem.IMP_ISD_HAS_IMP_DISPLAY

IMP_ISD_HAS_IMP_SCORE_FUNCTOR = _IMP_bayesianem.IMP_ISD_HAS_IMP_SCORE_FUNCTOR

IMP_ISD_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_ISD_HAS_BOOST_FILESYSTEM

IMP_ISD_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_ISD_HAS_BOOST_PROGRAMOPTIONS

IMP_ISD_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_ISD_HAS_BOOST_RANDOM

IMP_ISD_HAS_BOOST_REGEX = _IMP_bayesianem.IMP_ISD_HAS_BOOST_REGEX

IMP_ISD_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_ISD_HAS_BOOST_SYSTEM

IMP_ISD_HAS_CGAL = _IMP_bayesianem.IMP_ISD_HAS_CGAL

IMP_ISD_HAS_HDF5 = _IMP_bayesianem.IMP_ISD_HAS_HDF5

IMP_ISD_HAS_NUMPY = _IMP_bayesianem.IMP_ISD_HAS_NUMPY

IMP_ISD_HAS_PYTHON_IHM = _IMP_bayesianem.IMP_ISD_HAS_PYTHON_IHM

IMPISD_SHOW_WARNINGS = _IMP_bayesianem.IMPISD_SHOW_WARNINGS

import IMP.isd
IMP_BAYESIANEM_HAS_IMP_CGAL = _IMP_bayesianem.IMP_BAYESIANEM_HAS_IMP_CGAL

IMP_BAYESIANEM_HAS_IMP_DISPLAY = _IMP_bayesianem.IMP_BAYESIANEM_HAS_IMP_DISPLAY

IMP_BAYESIANEM_HAS_IMP_SCORE_FUNCTOR = _IMP_bayesianem.IMP_BAYESIANEM_HAS_IMP_SCORE_FUNCTOR

IMP_BAYESIANEM_HAS_BOOST_FILESYSTEM = _IMP_bayesianem.IMP_BAYESIANEM_HAS_BOOST_FILESYSTEM

IMP_BAYESIANEM_HAS_BOOST_PROGRAMOPTIONS = _IMP_bayesianem.IMP_BAYESIANEM_HAS_BOOST_PROGRAMOPTIONS

IMP_BAYESIANEM_HAS_BOOST_RANDOM = _IMP_bayesianem.IMP_BAYESIANEM_HAS_BOOST_RANDOM

IMP_BAYESIANEM_HAS_BOOST_REGEX = _IMP_bayesianem.IMP_BAYESIANEM_HAS_BOOST_REGEX

IMP_BAYESIANEM_HAS_BOOST_SYSTEM = _IMP_bayesianem.IMP_BAYESIANEM_HAS_BOOST_SYSTEM

IMP_BAYESIANEM_HAS_CGAL = _IMP_bayesianem.IMP_BAYESIANEM_HAS_CGAL

IMP_BAYESIANEM_HAS_HDF5 = _IMP_bayesianem.IMP_BAYESIANEM_HAS_HDF5

IMP_BAYESIANEM_HAS_NUMPY = _IMP_bayesianem.IMP_BAYESIANEM_HAS_NUMPY

IMP_BAYESIANEM_HAS_PYTHON_IHM = _IMP_bayesianem.IMP_BAYESIANEM_HAS_PYTHON_IHM

IMPBAYESIANEM_SHOW_WARNINGS = _IMP_bayesianem.IMPBAYESIANEM_SHOW_WARNINGS


_object_types.append("GaussianEMRestraint")

class GaussianEMRestraint(IMP.Restraint):
    r"""Proxy of C++ IMP::bayesianem::GaussianEMRestraint class."""

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

    def __init__(self, *args):
        r"""__init__(GaussianEMRestraint self, Model mdl, IMP::ParticleIndexes model_ps, IMP::ParticleIndexes density_ps, ParticleIndex global_sigma, IMP::Float model_cutoff_dist, IMP::Float density_cutoff_dist, IMP::Float slope, bool update_model=True, bool backbone_slope=False, std::string name="GaussianEMRestraint%1%") -> GaussianEMRestraint"""
        _IMP_bayesianem.GaussianEMRestraint_swiginit(self, _IMP_bayesianem.new_GaussianEMRestraint(*args))

    def get_probability(self):
        r"""get_probability(GaussianEMRestraint self) -> double"""
        return _IMP_bayesianem.GaussianEMRestraint_get_probability(self)

    def set_density_filename(self, density_fn):
        r"""set_density_filename(GaussianEMRestraint self, std::string density_fn)"""
        return _IMP_bayesianem.GaussianEMRestraint_set_density_filename(self, density_fn)

    def compute_initial_scores(self):
        r"""compute_initial_scores(GaussianEMRestraint self)"""
        return _IMP_bayesianem.GaussianEMRestraint_compute_initial_scores(self)

    def get_indexes(self):
        r"""get_indexes(GaussianEMRestraint self) -> IMP::ParticleIndexes const"""
        return _IMP_bayesianem.GaussianEMRestraint_get_indexes(self)

    def get_log2(self):
        r"""get_log2(GaussianEMRestraint self) -> IMP::Floats const"""
        return _IMP_bayesianem.GaussianEMRestraint_get_log2(self)

    def debug(self):
        r"""debug(GaussianEMRestraint self)"""
        return _IMP_bayesianem.GaussianEMRestraint_debug(self)

    def set_slope(self, s):
        r"""set_slope(GaussianEMRestraint self, IMP::Float s)"""
        return _IMP_bayesianem.GaussianEMRestraint_set_slope(self, s)

    def get_slope(self):
        r"""get_slope(GaussianEMRestraint self) -> IMP::Float"""
        return _IMP_bayesianem.GaussianEMRestraint_get_slope(self)

    def do_get_inputs(self):
        r"""do_get_inputs(GaussianEMRestraint self) -> IMP::ModelObjectsTemp"""
        return _IMP_bayesianem.GaussianEMRestraint_do_get_inputs(self)

    def show(self, out):
        r"""show(GaussianEMRestraint self, _ostream out)"""
        return _IMP_bayesianem.GaussianEMRestraint_show(self, out)

    def get_version_info(self):
        r"""get_version_info(GaussianEMRestraint self) -> VersionInfo"""
        return _IMP_bayesianem.GaussianEMRestraint_get_version_info(self)

    def __str__(self):
        r"""__str__(GaussianEMRestraint self) -> std::string"""
        return _IMP_bayesianem.GaussianEMRestraint___str__(self)

    def __repr__(self):
        r"""__repr__(GaussianEMRestraint self) -> std::string"""
        return _IMP_bayesianem.GaussianEMRestraint___repr__(self)

    @staticmethod
    def get_from(o):
       return _object_cast_to_GaussianEMRestraint(o)


# Register GaussianEMRestraint in _IMP_bayesianem:
_IMP_bayesianem.GaussianEMRestraint_swigregister(GaussianEMRestraint)


def get_rmsd_excluding_higher_than(m1, m2, t):
    r"""get_rmsd_excluding_higher_than(IMP::core::XYZs const & m1, IMP::core::XYZs const & m2, double const t) -> double"""
    return _IMP_bayesianem.get_rmsd_excluding_higher_than(m1, m2, t)

def get_percentage_closer_than(m1, m2, t):
    r"""get_percentage_closer_than(IMP::core::XYZs const & m1, IMP::core::XYZs const & m2, double const t) -> double"""
    return _IMP_bayesianem.get_percentage_closer_than(m1, m2, t)

def get_transformation_aligning_first_to_second(s1, s2):
    r"""get_transformation_aligning_first_to_second(Selection s1, Selection s2) -> Transformation3D"""
    return _IMP_bayesianem.get_transformation_aligning_first_to_second(s1, s2)

def get_rmsd_of_best_population(*args):
    r"""
    get_rmsd_of_best_population(IMP::core::XYZs const & m1, IMP::core::XYZs const & m2, double const percentage) -> double
    get_rmsd_of_best_population(Selection s1, Selection s2, double const percentage) -> double
    get_rmsd_of_best_population(IMP::algebra::Vector3Ds const & m1, IMP::algebra::Vector3Ds const & m2, double const percentage) -> double
    """
    return _IMP_bayesianem.get_rmsd_of_best_population(*args)

def gem_score_cc(model_ps, density_ps):
    r"""gem_score_cc(IMP::Particles model_ps, IMP::Particles density_ps) -> double"""
    return _IMP_bayesianem.gem_score_cc(model_ps, density_ps)

def get_grid(_in):
    r"""get_grid(DensityMap _in) -> DenseDoubleGrid3D"""
    return _IMP_bayesianem.get_grid(_in)

def get_masked_map(gmm, weights, densitymap, threshold):
    r"""get_masked_map(IMP::algebra::Gaussian3Ds const & gmm, IMP::Floats const & weights, DensityMap densitymap, double threshold) -> DensityMap"""
    return _IMP_bayesianem.get_masked_map(gmm, weights, densitymap, threshold)

def get_sub_map(dm, sub_gmm, gmm):
    r"""get_sub_map(DensityMap dm, DensityMap sub_gmm, DensityMap gmm) -> DensityMap"""
    return _IMP_bayesianem.get_sub_map(dm, sub_gmm, gmm)

def get_overlap_fast(gmm, weights, dm, factor=2.5):
    r"""get_overlap_fast(IMP::algebra::Gaussian3Ds const & gmm, IMP::Floats const & weights, DensityMap dm, double factor=2.5) -> double"""
    return _IMP_bayesianem.get_overlap_fast(gmm, weights, dm, factor)

def get_overlap_binned(gmm, weights, dm, factor=2.5, Nbin=100):
    r"""get_overlap_binned(IMP::algebra::Gaussian3Ds const & gmm, IMP::Floats const & weights, DensityMap dm, double factor=2.5, int Nbin=100) -> IMP::algebra::Vector3Ds"""
    return _IMP_bayesianem.get_overlap_binned(gmm, weights, dm, factor, Nbin)

def get_rotation_matrix(x, y):
    r"""get_rotation_matrix(Vector3D x, Vector3D y) -> Rotation3D"""
    return _IMP_bayesianem.get_rotation_matrix(x, y)

def sgn(v):
    r"""sgn(double v) -> float"""
    return _IMP_bayesianem.sgn(v)

def NormalizePCA(pca, ps):
    r"""NormalizePCA(PrincipalComponentAnalysis3D pca, IMP::Particles const & ps) -> PrincipalComponentAnalysis3D"""
    return _IMP_bayesianem.NormalizePCA(pca, ps)

def PCAalign(pca1, pca2):
    r"""PCAalign(PrincipalComponentAnalysis3D pca1, PrincipalComponentAnalysis3D pca2) -> IMP::algebra::Transformation3Ds"""
    return _IMP_bayesianem.PCAalign(pca1, pca2)

def get_module_version():
    r"""get_module_version() -> std::string const"""
    return _IMP_bayesianem.get_module_version()

def get_example_path(fname):
    r"""get_example_path(std::string fname) -> std::string"""
    return _IMP_bayesianem.get_example_path(fname)

def get_data_path(fname):
    r"""get_data_path(std::string fname) -> std::string"""
    return _IMP_bayesianem.get_data_path(fname)

from . import _version_check
_version_check.check_version(get_module_version())
__version__ = get_module_version()



