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

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_MISC_SwigPyIterator(object):
    r"""Proxy of C++ swig::IMP_MISC_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_misc.delete_IMP_MISC_SwigPyIterator

    def value(self):
        r"""value(IMP_MISC_SwigPyIterator self) -> PyObject *"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_value(self)

    def incr(self, n=1):
        r"""incr(IMP_MISC_SwigPyIterator self, size_t n=1) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_incr(self, n)

    def decr(self, n=1):
        r"""decr(IMP_MISC_SwigPyIterator self, size_t n=1) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_decr(self, n)

    def distance(self, x):
        r"""distance(IMP_MISC_SwigPyIterator self, IMP_MISC_SwigPyIterator x) -> ptrdiff_t"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_distance(self, x)

    def equal(self, x):
        r"""equal(IMP_MISC_SwigPyIterator self, IMP_MISC_SwigPyIterator x) -> bool"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_equal(self, x)

    def copy(self):
        r"""copy(IMP_MISC_SwigPyIterator self) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_copy(self)

    def next(self):
        r"""next(IMP_MISC_SwigPyIterator self) -> PyObject *"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_next(self)

    def __next__(self):
        r"""__next__(IMP_MISC_SwigPyIterator self) -> PyObject *"""
        return _IMP_misc.IMP_MISC_SwigPyIterator___next__(self)

    def previous(self):
        r"""previous(IMP_MISC_SwigPyIterator self) -> PyObject *"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_previous(self)

    def advance(self, n):
        r"""advance(IMP_MISC_SwigPyIterator self, ptrdiff_t n) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator_advance(self, n)

    def __eq__(self, x):
        r"""__eq__(IMP_MISC_SwigPyIterator self, IMP_MISC_SwigPyIterator x) -> bool"""
        return _IMP_misc.IMP_MISC_SwigPyIterator___eq__(self, x)

    def __ne__(self, x):
        r"""__ne__(IMP_MISC_SwigPyIterator self, IMP_MISC_SwigPyIterator x) -> bool"""
        return _IMP_misc.IMP_MISC_SwigPyIterator___ne__(self, x)

    def __iadd__(self, n):
        r"""__iadd__(IMP_MISC_SwigPyIterator self, ptrdiff_t n) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator___iadd__(self, n)

    def __isub__(self, n):
        r"""__isub__(IMP_MISC_SwigPyIterator self, ptrdiff_t n) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator___isub__(self, n)

    def __add__(self, n):
        r"""__add__(IMP_MISC_SwigPyIterator self, ptrdiff_t n) -> IMP_MISC_SwigPyIterator"""
        return _IMP_misc.IMP_MISC_SwigPyIterator___add__(self, n)

    def __sub__(self, *args):
        r"""
        __sub__(IMP_MISC_SwigPyIterator self, ptrdiff_t n) -> IMP_MISC_SwigPyIterator
        __sub__(IMP_MISC_SwigPyIterator self, IMP_MISC_SwigPyIterator x) -> ptrdiff_t
        """
        return _IMP_misc.IMP_MISC_SwigPyIterator___sub__(self, *args)
    def __iter__(self):
        return self

# Register IMP_MISC_SwigPyIterator in _IMP_misc:
_IMP_misc.IMP_MISC_SwigPyIterator_swigregister(IMP_MISC_SwigPyIterator)


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

IMP_DEBUG = _IMP_misc.IMP_DEBUG

IMP_RELEASE = _IMP_misc.IMP_RELEASE

IMP_SILENT = _IMP_misc.IMP_SILENT

IMP_PROGRESS = _IMP_misc.IMP_PROGRESS

IMP_TERSE = _IMP_misc.IMP_TERSE

IMP_VERBOSE = _IMP_misc.IMP_VERBOSE

IMP_MEMORY = _IMP_misc.IMP_MEMORY

IMP_NONE = _IMP_misc.IMP_NONE

IMP_USAGE = _IMP_misc.IMP_USAGE

IMP_INTERNAL = _IMP_misc.IMP_INTERNAL

IMP_KERNEL_HAS_LOG4CXX = _IMP_misc.IMP_KERNEL_HAS_LOG4CXX

IMP_COMPILER_HAS_AUTO = _IMP_misc.IMP_COMPILER_HAS_AUTO

IMP_COMPILER_HAS_DEBUG_VECTOR = _IMP_misc.IMP_COMPILER_HAS_DEBUG_VECTOR

IMP_COMPILER_HAS_UNIQUE_PTR = _IMP_misc.IMP_COMPILER_HAS_UNIQUE_PTR

IMP_KERNEL_HAS_BOOST_RANDOM = _IMP_misc.IMP_KERNEL_HAS_BOOST_RANDOM

IMP_KERNEL_HAS_NUMPY = _IMP_misc.IMP_KERNEL_HAS_NUMPY

IMP_KERNEL_HAS_GPERFTOOLS = _IMP_misc.IMP_KERNEL_HAS_GPERFTOOLS

IMP_KERNEL_HAS_TCMALLOC_HEAPCHECKER = _IMP_misc.IMP_KERNEL_HAS_TCMALLOC_HEAPCHECKER

IMP_KERNEL_HAS_TCMALLOC_HEAPPROFILER = _IMP_misc.IMP_KERNEL_HAS_TCMALLOC_HEAPPROFILER

IMPKERNEL_SHOW_WARNINGS = _IMP_misc.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_misc._ostream_write(self, osa_buf)

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

IMP_COMPILER_HAS_OVERRIDE = _IMP_misc.IMP_COMPILER_HAS_OVERRIDE

IMP_COMPILER_HAS_FINAL = _IMP_misc.IMP_COMPILER_HAS_FINAL

IMP_HAS_NOEXCEPT = _IMP_misc.IMP_HAS_NOEXCEPT

IMP_C_OPEN_BINARY = _IMP_misc.IMP_C_OPEN_BINARY

import IMP
IMP_CGAL_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_CGAL_HAS_BOOST_FILESYSTEM

IMP_CGAL_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_CGAL_HAS_BOOST_PROGRAMOPTIONS

IMP_CGAL_HAS_BOOST_RANDOM = _IMP_misc.IMP_CGAL_HAS_BOOST_RANDOM

IMP_CGAL_HAS_BOOST_SYSTEM = _IMP_misc.IMP_CGAL_HAS_BOOST_SYSTEM

IMP_CGAL_HAS_NUMPY = _IMP_misc.IMP_CGAL_HAS_NUMPY

IMPCGAL_SHOW_WARNINGS = _IMP_misc.IMPCGAL_SHOW_WARNINGS

import IMP.cgal
IMP_ALGEBRA_HAS_IMP_CGAL = _IMP_misc.IMP_ALGEBRA_HAS_IMP_CGAL

IMP_ALGEBRA_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_ALGEBRA_HAS_BOOST_FILESYSTEM

IMP_ALGEBRA_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_ALGEBRA_HAS_BOOST_PROGRAMOPTIONS

IMP_ALGEBRA_HAS_BOOST_RANDOM = _IMP_misc.IMP_ALGEBRA_HAS_BOOST_RANDOM

IMP_ALGEBRA_HAS_BOOST_SYSTEM = _IMP_misc.IMP_ALGEBRA_HAS_BOOST_SYSTEM

IMP_ALGEBRA_HAS_CGAL = _IMP_misc.IMP_ALGEBRA_HAS_CGAL

IMP_ALGEBRA_HAS_NUMPY = _IMP_misc.IMP_ALGEBRA_HAS_NUMPY

IMP_ALGEBRA_HAS_ANN = _IMP_misc.IMP_ALGEBRA_HAS_ANN

IMPALGEBRA_SHOW_WARNINGS = _IMP_misc.IMPALGEBRA_SHOW_WARNINGS

import IMP.algebra
IMP_DISPLAY_HAS_IMP_CGAL = _IMP_misc.IMP_DISPLAY_HAS_IMP_CGAL

IMP_DISPLAY_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_DISPLAY_HAS_BOOST_FILESYSTEM

IMP_DISPLAY_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_DISPLAY_HAS_BOOST_PROGRAMOPTIONS

IMP_DISPLAY_HAS_BOOST_RANDOM = _IMP_misc.IMP_DISPLAY_HAS_BOOST_RANDOM

IMP_DISPLAY_HAS_BOOST_SYSTEM = _IMP_misc.IMP_DISPLAY_HAS_BOOST_SYSTEM

IMP_DISPLAY_HAS_CGAL = _IMP_misc.IMP_DISPLAY_HAS_CGAL

IMP_DISPLAY_HAS_NUMPY = _IMP_misc.IMP_DISPLAY_HAS_NUMPY

IMPDISPLAY_SHOW_WARNINGS = _IMP_misc.IMPDISPLAY_SHOW_WARNINGS

import IMP.display
IMP_SCORE_FUNCTOR_HAS_IMP_CGAL = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_IMP_CGAL

IMP_SCORE_FUNCTOR_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_BOOST_FILESYSTEM

IMP_SCORE_FUNCTOR_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_BOOST_PROGRAMOPTIONS

IMP_SCORE_FUNCTOR_HAS_BOOST_RANDOM = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_BOOST_RANDOM

IMP_SCORE_FUNCTOR_HAS_BOOST_SYSTEM = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_BOOST_SYSTEM

IMP_SCORE_FUNCTOR_HAS_CGAL = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_CGAL

IMP_SCORE_FUNCTOR_HAS_HDF5 = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_HDF5

IMP_SCORE_FUNCTOR_HAS_NUMPY = _IMP_misc.IMP_SCORE_FUNCTOR_HAS_NUMPY

IMPSCOREFUNCTOR_SHOW_WARNINGS = _IMP_misc.IMPSCOREFUNCTOR_SHOW_WARNINGS

import IMP.score_functor
IMP_CORE_HAS_IMP_CGAL = _IMP_misc.IMP_CORE_HAS_IMP_CGAL

IMP_CORE_HAS_IMP_KERNEL = _IMP_misc.IMP_CORE_HAS_IMP_KERNEL

IMP_CORE_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_CORE_HAS_BOOST_FILESYSTEM

IMP_CORE_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_CORE_HAS_BOOST_PROGRAMOPTIONS

IMP_CORE_HAS_BOOST_RANDOM = _IMP_misc.IMP_CORE_HAS_BOOST_RANDOM

IMP_CORE_HAS_BOOST_SYSTEM = _IMP_misc.IMP_CORE_HAS_BOOST_SYSTEM

IMP_CORE_HAS_CGAL = _IMP_misc.IMP_CORE_HAS_CGAL

IMP_CORE_HAS_HDF5 = _IMP_misc.IMP_CORE_HAS_HDF5

IMP_CORE_HAS_NUMPY = _IMP_misc.IMP_CORE_HAS_NUMPY

IMPCORE_SHOW_WARNINGS = _IMP_misc.IMPCORE_SHOW_WARNINGS

import IMP.core
IMP_CONTAINER_HAS_IMP_ALGEBRA = _IMP_misc.IMP_CONTAINER_HAS_IMP_ALGEBRA

IMP_CONTAINER_HAS_IMP_CGAL = _IMP_misc.IMP_CONTAINER_HAS_IMP_CGAL

IMP_CONTAINER_HAS_IMP_DISPLAY = _IMP_misc.IMP_CONTAINER_HAS_IMP_DISPLAY

IMP_CONTAINER_HAS_IMP_KERNEL = _IMP_misc.IMP_CONTAINER_HAS_IMP_KERNEL

IMP_CONTAINER_HAS_IMP_SCORE_FUNCTOR = _IMP_misc.IMP_CONTAINER_HAS_IMP_SCORE_FUNCTOR

IMP_CONTAINER_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_CONTAINER_HAS_BOOST_FILESYSTEM

IMP_CONTAINER_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_CONTAINER_HAS_BOOST_PROGRAMOPTIONS

IMP_CONTAINER_HAS_BOOST_RANDOM = _IMP_misc.IMP_CONTAINER_HAS_BOOST_RANDOM

IMP_CONTAINER_HAS_BOOST_SYSTEM = _IMP_misc.IMP_CONTAINER_HAS_BOOST_SYSTEM

IMP_CONTAINER_HAS_CGAL = _IMP_misc.IMP_CONTAINER_HAS_CGAL

IMP_CONTAINER_HAS_HDF5 = _IMP_misc.IMP_CONTAINER_HAS_HDF5

IMP_CONTAINER_HAS_NUMPY = _IMP_misc.IMP_CONTAINER_HAS_NUMPY

IMP_CONTAINER_HAS_PYTHON_IHM = _IMP_misc.IMP_CONTAINER_HAS_PYTHON_IHM

IMP_CONTAINER_HAS_GOOGLE_DENSE_HASH_MAP = _IMP_misc.IMP_CONTAINER_HAS_GOOGLE_DENSE_HASH_MAP

IMP_CONTAINER_HAS_ROBIN_MAP = _IMP_misc.IMP_CONTAINER_HAS_ROBIN_MAP

IMPCONTAINER_SHOW_WARNINGS = _IMP_misc.IMPCONTAINER_SHOW_WARNINGS

import IMP.container
IMP_ATOM_HAS_IMP_CGAL = _IMP_misc.IMP_ATOM_HAS_IMP_CGAL

IMP_ATOM_HAS_IMP_KERNEL = _IMP_misc.IMP_ATOM_HAS_IMP_KERNEL

IMP_ATOM_HAS_IMP_SCORE_FUNCTOR = _IMP_misc.IMP_ATOM_HAS_IMP_SCORE_FUNCTOR

IMP_ATOM_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_ATOM_HAS_BOOST_PROGRAMOPTIONS

IMP_ATOM_HAS_BOOST_RANDOM = _IMP_misc.IMP_ATOM_HAS_BOOST_RANDOM

IMP_ATOM_HAS_BOOST_REGEX = _IMP_misc.IMP_ATOM_HAS_BOOST_REGEX

IMP_ATOM_HAS_BOOST_SYSTEM = _IMP_misc.IMP_ATOM_HAS_BOOST_SYSTEM

IMP_ATOM_HAS_CGAL = _IMP_misc.IMP_ATOM_HAS_CGAL

IMP_ATOM_HAS_HDF5 = _IMP_misc.IMP_ATOM_HAS_HDF5

IMP_ATOM_HAS_NUMPY = _IMP_misc.IMP_ATOM_HAS_NUMPY

IMP_ATOM_HAS_PYTHON_IHM = _IMP_misc.IMP_ATOM_HAS_PYTHON_IHM

IMPATOM_SHOW_WARNINGS = _IMP_misc.IMPATOM_SHOW_WARNINGS

IMP_ATOM_TYPE_INDEX = _IMP_misc.IMP_ATOM_TYPE_INDEX

IMP_RESIDUE_TYPE_INDEX = _IMP_misc.IMP_RESIDUE_TYPE_INDEX

IMP_HIERARCHY_TYPE_INDEX = _IMP_misc.IMP_HIERARCHY_TYPE_INDEX

IMP_CHAIN_TYPE_INDEX = _IMP_misc.IMP_CHAIN_TYPE_INDEX

import IMP.atom
IMP_MISC_HAS_IMP_ALGEBRA = _IMP_misc.IMP_MISC_HAS_IMP_ALGEBRA

IMP_MISC_HAS_IMP_CGAL = _IMP_misc.IMP_MISC_HAS_IMP_CGAL

IMP_MISC_HAS_IMP_CONTAINER = _IMP_misc.IMP_MISC_HAS_IMP_CONTAINER

IMP_MISC_HAS_IMP_DISPLAY = _IMP_misc.IMP_MISC_HAS_IMP_DISPLAY

IMP_MISC_HAS_IMP_KERNEL = _IMP_misc.IMP_MISC_HAS_IMP_KERNEL

IMP_MISC_HAS_IMP_SCORE_FUNCTOR = _IMP_misc.IMP_MISC_HAS_IMP_SCORE_FUNCTOR

IMP_MISC_HAS_BOOST_FILESYSTEM = _IMP_misc.IMP_MISC_HAS_BOOST_FILESYSTEM

IMP_MISC_HAS_BOOST_PROGRAMOPTIONS = _IMP_misc.IMP_MISC_HAS_BOOST_PROGRAMOPTIONS

IMP_MISC_HAS_BOOST_RANDOM = _IMP_misc.IMP_MISC_HAS_BOOST_RANDOM

IMP_MISC_HAS_BOOST_REGEX = _IMP_misc.IMP_MISC_HAS_BOOST_REGEX

IMP_MISC_HAS_BOOST_SYSTEM = _IMP_misc.IMP_MISC_HAS_BOOST_SYSTEM

IMP_MISC_HAS_CGAL = _IMP_misc.IMP_MISC_HAS_CGAL

IMP_MISC_HAS_HDF5 = _IMP_misc.IMP_MISC_HAS_HDF5

IMP_MISC_HAS_NUMPY = _IMP_misc.IMP_MISC_HAS_NUMPY

IMP_MISC_HAS_PYTHON_IHM = _IMP_misc.IMP_MISC_HAS_PYTHON_IHM

IMPMISC_SHOW_WARNINGS = _IMP_misc.IMPMISC_SHOW_WARNINGS


_object_types.append("WormLikeChain")


def _object_cast_to_WormLikeChain(o):
    r"""_object_cast_to_WormLikeChain(Object o) -> WormLikeChain"""
    return _IMP_misc._object_cast_to_WormLikeChain(o)

_object_types.append("FreelyJointedChain")


def _object_cast_to_FreelyJointedChain(o):
    r"""_object_cast_to_FreelyJointedChain(Object o) -> FreelyJointedChain"""
    return _IMP_misc._object_cast_to_FreelyJointedChain(o)

_object_types.append("StateAdaptor")


def _object_cast_to_StateAdaptor(o):
    r"""_object_cast_to_StateAdaptor(Object o) -> StateAdaptor"""
    return _IMP_misc._object_cast_to_StateAdaptor(o)

_object_types.append("CommonEndpointPairFilter")


def _object_cast_to_CommonEndpointPairFilter(o):
    r"""_object_cast_to_CommonEndpointPairFilter(Object o) -> CommonEndpointPairFilter"""
    return _IMP_misc._object_cast_to_CommonEndpointPairFilter(o)

_object_types.append("LogPairScore")


def _object_cast_to_LogPairScore(o):
    r"""_object_cast_to_LogPairScore(Object o) -> LogPairScore"""
    return _IMP_misc._object_cast_to_LogPairScore(o)

_object_types.append("LowestRefinedPairScore")


def _object_cast_to_LowestRefinedPairScore(o):
    r"""_object_cast_to_LowestRefinedPairScore(Object o) -> LowestRefinedPairScore"""
    return _IMP_misc._object_cast_to_LowestRefinedPairScore(o)

_object_types.append("SoftCylinderPairScore")


def _object_cast_to_SoftCylinderPairScore(o):
    r"""_object_cast_to_SoftCylinderPairScore(Object o) -> SoftCylinderPairScore"""
    return _IMP_misc._object_cast_to_SoftCylinderPairScore(o)

_object_types.append("DecayPairContainerOptimizerState")


def _object_cast_to_DecayPairContainerOptimizerState(o):
    r"""_object_cast_to_DecayPairContainerOptimizerState(Object o) -> DecayPairContainerOptimizerState"""
    return _IMP_misc._object_cast_to_DecayPairContainerOptimizerState(o)

def CustomXYZRs(l=[]):
    return [CustomXYZR(x) for x in l]
_plural_types.append("CustomXYZRs")


_value_types.append("CustomXYZR")

class WormLikeChain(IMP.UnaryFunction):
    r"""Proxy of C++ IMP::misc::WormLikeChain class."""

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

    def __init__(self, l_max, lp):
        r"""__init__(WormLikeChain self, IMP::Float l_max, IMP::Float lp) -> WormLikeChain"""
        _IMP_misc.WormLikeChain_swiginit(self, _IMP_misc.new_WormLikeChain(l_max, lp))

    def get_version_info(self):
        r"""get_version_info(WormLikeChain self) -> VersionInfo"""
        return _IMP_misc.WormLikeChain_get_version_info(self)

    def do_show(self, out):
        r"""do_show(WormLikeChain self, _ostream out)"""
        return _IMP_misc.WormLikeChain_do_show(self, out)

    def __str__(self):
        r"""__str__(WormLikeChain self) -> std::string"""
        return _IMP_misc.WormLikeChain___str__(self)

    def __repr__(self):
        r"""__repr__(WormLikeChain self) -> std::string"""
        return _IMP_misc.WormLikeChain___repr__(self)

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


# Register WormLikeChain in _IMP_misc:
_IMP_misc.WormLikeChain_swigregister(WormLikeChain)

class FreelyJointedChain(IMP.UnaryFunction):
    r"""Proxy of C++ IMP::misc::FreelyJointedChain class."""

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

    def __init__(self, link_num, link_length):
        r"""__init__(FreelyJointedChain self, int link_num, double link_length) -> FreelyJointedChain"""
        _IMP_misc.FreelyJointedChain_swiginit(self, _IMP_misc.new_FreelyJointedChain(link_num, link_length))

    def get_version_info(self):
        r"""get_version_info(FreelyJointedChain self) -> VersionInfo"""
        return _IMP_misc.FreelyJointedChain_get_version_info(self)

    def get_link_number(self):
        r"""get_link_number(FreelyJointedChain self) -> int"""
        return _IMP_misc.FreelyJointedChain_get_link_number(self)

    def get_link_length(self):
        r"""get_link_length(FreelyJointedChain self) -> double"""
        return _IMP_misc.FreelyJointedChain_get_link_length(self)

    def set_link_number(self, N):
        r"""set_link_number(FreelyJointedChain self, int N)"""
        return _IMP_misc.FreelyJointedChain_set_link_number(self, N)

    def set_link_length(self, b):
        r"""set_link_length(FreelyJointedChain self, double b)"""
        return _IMP_misc.FreelyJointedChain_set_link_length(self, b)

    def get_distance_at_minimum(self):
        r"""get_distance_at_minimum(FreelyJointedChain self) -> double"""
        return _IMP_misc.FreelyJointedChain_get_distance_at_minimum(self)

    def get_average_distance(self):
        r"""get_average_distance(FreelyJointedChain self) -> double"""
        return _IMP_misc.FreelyJointedChain_get_average_distance(self)

    def __str__(self):
        r"""__str__(FreelyJointedChain self) -> std::string"""
        return _IMP_misc.FreelyJointedChain___str__(self)

    def __repr__(self):
        r"""__repr__(FreelyJointedChain self) -> std::string"""
        return _IMP_misc.FreelyJointedChain___repr__(self)

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


# Register FreelyJointedChain in _IMP_misc:
_IMP_misc.FreelyJointedChain_swigregister(FreelyJointedChain)

class LowestRefinedPairScore(IMP.PairScore):
    r"""Proxy of C++ IMP::misc::LowestRefinedPairScore class."""

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

    def __init__(self, r, f):
        r"""__init__(LowestRefinedPairScore self, Refiner r, PairScore f) -> LowestRefinedPairScore"""
        _IMP_misc.LowestRefinedPairScore_swiginit(self, _IMP_misc.new_LowestRefinedPairScore(r, f))

    def do_get_inputs(self, m, pis):
        r"""do_get_inputs(LowestRefinedPairScore self, Model m, IMP::ParticleIndexes const & pis) -> IMP::ModelObjectsTemp"""
        return _IMP_misc.LowestRefinedPairScore_do_get_inputs(self, m, pis)

    def get_version_info(self):
        r"""get_version_info(LowestRefinedPairScore self) -> VersionInfo"""
        return _IMP_misc.LowestRefinedPairScore_get_version_info(self)

    def __str__(self):
        r"""__str__(LowestRefinedPairScore self) -> std::string"""
        return _IMP_misc.LowestRefinedPairScore___str__(self)

    def __repr__(self):
        r"""__repr__(LowestRefinedPairScore self) -> std::string"""
        return _IMP_misc.LowestRefinedPairScore___repr__(self)

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


# Register LowestRefinedPairScore in _IMP_misc:
_IMP_misc.LowestRefinedPairScore_swigregister(LowestRefinedPairScore)

class LogPairScore(IMP.PairScore):
    r"""Proxy of C++ IMP::misc::LogPairScore class."""

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

    def __init__(self):
        r"""__init__(LogPairScore self) -> LogPairScore"""
        _IMP_misc.LogPairScore_swiginit(self, _IMP_misc.new_LogPairScore())

    def do_get_inputs(self, arg2, arg3):
        r"""do_get_inputs(LogPairScore self, Model arg2, IMP::ParticleIndexes const & arg3) -> IMP::ModelObjectsTemp"""
        return _IMP_misc.LogPairScore_do_get_inputs(self, arg2, arg3)

    def get_version_info(self):
        r"""get_version_info(LogPairScore self) -> VersionInfo"""
        return _IMP_misc.LogPairScore_get_version_info(self)

    def get_particle_pairs(self):
        r"""get_particle_pairs(LogPairScore self) -> IMP::ParticlePairsTemp"""
        return _IMP_misc.LogPairScore_get_particle_pairs(self)

    def clear(self):
        r"""clear(LogPairScore self)"""
        return _IMP_misc.LogPairScore_clear(self)

    def get_contains(self, pp):
        r"""get_contains(LogPairScore self, IMP::ParticlePair const & pp) -> bool"""
        return _IMP_misc.LogPairScore_get_contains(self, pp)

    def __str__(self):
        r"""__str__(LogPairScore self) -> std::string"""
        return _IMP_misc.LogPairScore___str__(self)

    def __repr__(self):
        r"""__repr__(LogPairScore self) -> std::string"""
        return _IMP_misc.LogPairScore___repr__(self)

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


# Register LogPairScore in _IMP_misc:
_IMP_misc.LogPairScore_swigregister(LogPairScore)

class StateAdaptor(IMP.ScoreState):
    r"""Proxy of C++ IMP::misc::StateAdaptor class."""

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

    def __init__(self, m, before, after):
        r"""__init__(StateAdaptor self, Model m, OptimizerState before, OptimizerState after) -> StateAdaptor"""
        _IMP_misc.StateAdaptor_swiginit(self, _IMP_misc.new_StateAdaptor(m, before, after))

    def do_before_evaluate(self):
        r"""do_before_evaluate(StateAdaptor self)"""
        return _IMP_misc.StateAdaptor_do_before_evaluate(self)

    def do_after_evaluate(self, da):
        r"""do_after_evaluate(StateAdaptor self, DerivativeAccumulator da)"""
        return _IMP_misc.StateAdaptor_do_after_evaluate(self, da)

    def do_get_inputs(self):
        r"""do_get_inputs(StateAdaptor self) -> IMP::ModelObjectsTemp"""
        return _IMP_misc.StateAdaptor_do_get_inputs(self)

    def do_get_outputs(self):
        r"""do_get_outputs(StateAdaptor self) -> IMP::ModelObjectsTemp"""
        return _IMP_misc.StateAdaptor_do_get_outputs(self)

    def get_version_info(self):
        r"""get_version_info(StateAdaptor self) -> VersionInfo"""
        return _IMP_misc.StateAdaptor_get_version_info(self)

    def __str__(self):
        r"""__str__(StateAdaptor self) -> std::string"""
        return _IMP_misc.StateAdaptor___str__(self)

    def __repr__(self):
        r"""__repr__(StateAdaptor self) -> std::string"""
        return _IMP_misc.StateAdaptor___repr__(self)

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


# Register StateAdaptor in _IMP_misc:
_IMP_misc.StateAdaptor_swigregister(StateAdaptor)

class CommonEndpointPairFilter(IMP.PairPredicate):
    r"""Proxy of C++ IMP::misc::CommonEndpointPairFilter class."""

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

    def __init__(self):
        r"""__init__(CommonEndpointPairFilter self) -> CommonEndpointPairFilter"""
        _IMP_misc.CommonEndpointPairFilter_swiginit(self, _IMP_misc.new_CommonEndpointPairFilter())

    def do_get_inputs(self, m, pis):
        r"""do_get_inputs(CommonEndpointPairFilter self, Model m, IMP::ParticleIndexes const & pis) -> IMP::ModelObjectsTemp"""
        return _IMP_misc.CommonEndpointPairFilter_do_get_inputs(self, m, pis)

    def get_value(self, *args):
        r"""
        get_value(CommonEndpointPairFilter self, IMP::ParticlePair const & a) -> int
        get_value(CommonEndpointPairFilter self, IMP::ParticlePairsTemp const & o) -> IMP::Ints
        """
        return _IMP_misc.CommonEndpointPairFilter_get_value(self, *args)

    def get_value_index(self, *args):
        r"""
        get_value_index(CommonEndpointPairFilter self, Model m, IMP::ParticleIndexPair const & p) -> int
        get_value_index(CommonEndpointPairFilter self, Model m, IMP::ParticleIndexPairs const & o) -> IMP::Ints
        """
        return _IMP_misc.CommonEndpointPairFilter_get_value_index(self, *args)

    def get_version_info(self):
        r"""get_version_info(CommonEndpointPairFilter self) -> VersionInfo"""
        return _IMP_misc.CommonEndpointPairFilter_get_version_info(self)

    def __str__(self):
        r"""__str__(CommonEndpointPairFilter self) -> std::string"""
        return _IMP_misc.CommonEndpointPairFilter___str__(self)

    def __repr__(self):
        r"""__repr__(CommonEndpointPairFilter self) -> std::string"""
        return _IMP_misc.CommonEndpointPairFilter___repr__(self)

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


# Register CommonEndpointPairFilter in _IMP_misc:
_IMP_misc.CommonEndpointPairFilter_swigregister(CommonEndpointPairFilter)

class CustomXYZR(IMP.core.XYZ):
    r"""Proxy of C++ IMP::misc::CustomXYZR class."""

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

    def get_decorator_traits(self):
        r"""get_decorator_traits(CustomXYZR self) -> FloatKey"""
        return _IMP_misc.CustomXYZR_get_decorator_traits(self)

    @staticmethod
    def get_default_decorator_traits():
        r"""get_default_decorator_traits() -> FloatKey"""
        return _IMP_misc.CustomXYZR_get_default_decorator_traits()

    def __init__(self, *args):
        r"""
        __init__(CustomXYZR self) -> CustomXYZR
        __init__(CustomXYZR self, Model m, ParticleIndex id, FloatKey tr=IMP::core::XYZR::get_radius_key()) -> CustomXYZR
        __init__(CustomXYZR self, _ParticleAdaptor d, FloatKey tr=IMP::core::XYZR::get_radius_key()) -> CustomXYZR
        """
        _IMP_misc.CustomXYZR_swiginit(self, _IMP_misc.new_CustomXYZR(*args))

    def show(self, *args):
        r"""show(CustomXYZR self, _ostream out=std::cout)"""
        return _IMP_misc.CustomXYZR_show(self, *args)

    @staticmethod
    def setup_particle(*args):
        r"""
        setup_particle(Model m, ParticleIndex pi, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
        setup_particle(_ParticleAdaptor d, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
        setup_particle(Model m, ParticleIndex pi, double radius, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
        setup_particle(_ParticleAdaptor d, double radius, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
        setup_particle(Model m, ParticleIndex pi, Sphere3D ball, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
        setup_particle(_ParticleAdaptor d, Sphere3D ball, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
        """
        return _IMP_misc.CustomXYZR_setup_particle(*args)

    @staticmethod
    def get_is_setup(*args):
        r"""
        get_is_setup(_ParticleAdaptor p, FloatKey tr=IMP::core::XYZR::get_radius_key()) -> bool
        get_is_setup(Model m, ParticleIndex pi, FloatKey radius_key=get_default_radius_key()) -> bool
        """
        return _IMP_misc.CustomXYZR_get_is_setup(*args)

    def get_radius(self):
        r"""get_radius(CustomXYZR self) -> IMP::Float"""
        return _IMP_misc.CustomXYZR_get_radius(self)

    def set_radius(self, t):
        r"""set_radius(CustomXYZR self, IMP::Float t)"""
        return _IMP_misc.CustomXYZR_set_radius(self, t)

    def get_sphere(self):
        r"""get_sphere(CustomXYZR self) -> Sphere3D"""
        return _IMP_misc.CustomXYZR_get_sphere(self)

    def set_sphere(self, s):
        r"""set_sphere(CustomXYZR self, Sphere3D s)"""
        return _IMP_misc.CustomXYZR_set_sphere(self, s)

    @staticmethod
    def get_default_radius_key():
        r"""get_default_radius_key() -> FloatKey"""
        return _IMP_misc.CustomXYZR_get_default_radius_key()

    def add_to_radius_derivative(self, v, d):
        r"""add_to_radius_derivative(CustomXYZR self, double v, DerivativeAccumulator d)"""
        return _IMP_misc.CustomXYZR_add_to_radius_derivative(self, v, d)

    def get_traits(self):
        r"""get_traits(CustomXYZR self) -> FloatKey"""
        return _IMP_misc.CustomXYZR_get_traits(self)

    def add_attribute(self, *args):
        r"""
        add_attribute(CustomXYZR self, FloatKey k, IMP::Float v, bool opt)
        add_attribute(CustomXYZR self, FloatKey a0, IMP::Float a1)
        add_attribute(CustomXYZR self, IntKey a0, IMP::Int a1)
        add_attribute(CustomXYZR self, FloatsKey a0, IMP::Floats a1)
        add_attribute(CustomXYZR self, IntsKey a0, IMP::Ints a1)
        add_attribute(CustomXYZR self, StringKey a0, IMP::String a1)
        add_attribute(CustomXYZR self, ParticleIndexKey a0, Particle a1)
        add_attribute(CustomXYZR self, ObjectKey a0, Object a1)
        """
        return _IMP_misc.CustomXYZR_add_attribute(self, *args)

    def get_value(self, *args):
        r"""
        get_value(CustomXYZR self, FloatKey a0) -> IMP::Float
        get_value(CustomXYZR self, IntKey a0) -> IMP::Int
        get_value(CustomXYZR self, FloatsKey a0) -> IMP::Floats
        get_value(CustomXYZR self, IntsKey a0) -> IMP::Ints
        get_value(CustomXYZR self, StringKey a0) -> IMP::String
        get_value(CustomXYZR self, ParticleIndexKey a0) -> Particle
        get_value(CustomXYZR self, ObjectKey a0) -> Object
        """
        return _IMP_misc.CustomXYZR_get_value(self, *args)

    def set_value(self, *args):
        r"""
        set_value(CustomXYZR self, FloatKey a0, IMP::Float a1)
        set_value(CustomXYZR self, IntKey a0, IMP::Int a1)
        set_value(CustomXYZR self, FloatsKey a0, IMP::Floats a1)
        set_value(CustomXYZR self, IntsKey a0, IMP::Ints a1)
        set_value(CustomXYZR self, StringKey a0, IMP::String a1)
        set_value(CustomXYZR self, ParticleIndexKey a0, Particle a1)
        set_value(CustomXYZR self, ObjectKey a0, Object a1)
        """
        return _IMP_misc.CustomXYZR_set_value(self, *args)

    def remove_attribute(self, *args):
        r"""
        remove_attribute(CustomXYZR self, FloatKey a0)
        remove_attribute(CustomXYZR self, IntKey a0)
        remove_attribute(CustomXYZR self, FloatsKey a0)
        remove_attribute(CustomXYZR self, IntsKey a0)
        remove_attribute(CustomXYZR self, StringKey a0)
        remove_attribute(CustomXYZR self, ParticleIndexKey a0)
        remove_attribute(CustomXYZR self, ObjectKey a0)
        """
        return _IMP_misc.CustomXYZR_remove_attribute(self, *args)

    def has_attribute(self, *args):
        r"""
        has_attribute(CustomXYZR self, FloatKey a0) -> bool
        has_attribute(CustomXYZR self, IntKey a0) -> bool
        has_attribute(CustomXYZR self, FloatsKey a0) -> bool
        has_attribute(CustomXYZR self, IntsKey a0) -> bool
        has_attribute(CustomXYZR self, StringKey a0) -> bool
        has_attribute(CustomXYZR self, ParticleIndexKey a0) -> bool
        has_attribute(CustomXYZR self, ObjectKey a0) -> bool
        """
        return _IMP_misc.CustomXYZR_has_attribute(self, *args)

    def get_derivative(self, a0):
        r"""get_derivative(CustomXYZR self, FloatKey a0) -> double"""
        return _IMP_misc.CustomXYZR_get_derivative(self, a0)

    def get_name(self):
        r"""get_name(CustomXYZR self) -> std::string"""
        return _IMP_misc.CustomXYZR_get_name(self)

    def clear_caches(self):
        r"""clear_caches(CustomXYZR self)"""
        return _IMP_misc.CustomXYZR_clear_caches(self)

    def set_name(self, a0):
        r"""set_name(CustomXYZR self, std::string a0)"""
        return _IMP_misc.CustomXYZR_set_name(self, a0)

    def set_check_level(self, a0):
        r"""set_check_level(CustomXYZR self, IMP::CheckLevel a0)"""
        return _IMP_misc.CustomXYZR_set_check_level(self, a0)

    def add_to_derivative(self, a0, a1, a2):
        r"""add_to_derivative(CustomXYZR self, FloatKey a0, double a1, DerivativeAccumulator a2)"""
        return _IMP_misc.CustomXYZR_add_to_derivative(self, a0, a1, a2)

    def set_is_optimized(self, a0, a1):
        r"""set_is_optimized(CustomXYZR self, FloatKey a0, bool a1)"""
        return _IMP_misc.CustomXYZR_set_is_optimized(self, a0, a1)

    def get_is_optimized(self, a0):
        r"""get_is_optimized(CustomXYZR self, FloatKey a0) -> bool"""
        return _IMP_misc.CustomXYZR_get_is_optimized(self, a0)

    def get_check_level(self):
        r"""get_check_level(CustomXYZR self) -> IMP::CheckLevel"""
        return _IMP_misc.CustomXYZR_get_check_level(self)

    def __eq__(self, *args):
        r"""
        __eq__(CustomXYZR self, CustomXYZR o) -> bool
        __eq__(CustomXYZR self, Particle d) -> bool
        """
        return _IMP_misc.CustomXYZR___eq__(self, *args)

    def __ne__(self, *args):
        r"""
        __ne__(CustomXYZR self, CustomXYZR o) -> bool
        __ne__(CustomXYZR self, Particle d) -> bool
        """
        return _IMP_misc.CustomXYZR___ne__(self, *args)

    def __le__(self, *args):
        r"""
        __le__(CustomXYZR self, CustomXYZR o) -> bool
        __le__(CustomXYZR self, Particle d) -> bool
        """
        return _IMP_misc.CustomXYZR___le__(self, *args)

    def __lt__(self, *args):
        r"""
        __lt__(CustomXYZR self, CustomXYZR o) -> bool
        __lt__(CustomXYZR self, Particle d) -> bool
        """
        return _IMP_misc.CustomXYZR___lt__(self, *args)

    def __ge__(self, *args):
        r"""
        __ge__(CustomXYZR self, CustomXYZR o) -> bool
        __ge__(CustomXYZR self, Particle d) -> bool
        """
        return _IMP_misc.CustomXYZR___ge__(self, *args)

    def __gt__(self, *args):
        r"""
        __gt__(CustomXYZR self, CustomXYZR o) -> bool
        __gt__(CustomXYZR self, Particle d) -> bool
        """
        return _IMP_misc.CustomXYZR___gt__(self, *args)

    def __hash__(self):
        r"""__hash__(CustomXYZR self) -> std::size_t"""
        return _IMP_misc.CustomXYZR___hash__(self)

    def __str__(self):
        r"""__str__(CustomXYZR self) -> std::string"""
        return _IMP_misc.CustomXYZR___str__(self)

    def __repr__(self):
        r"""__repr__(CustomXYZR self) -> std::string"""
        return _IMP_misc.CustomXYZR___repr__(self)
    __swig_destroy__ = _IMP_misc.delete_CustomXYZR

# Register CustomXYZR in _IMP_misc:
_IMP_misc.CustomXYZR_swigregister(CustomXYZR)

def CustomXYZR_get_default_decorator_traits():
    r"""CustomXYZR_get_default_decorator_traits() -> FloatKey"""
    return _IMP_misc.CustomXYZR_get_default_decorator_traits()

def CustomXYZR_setup_particle(*args):
    r"""
    CustomXYZR_setup_particle(Model m, ParticleIndex pi, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
    CustomXYZR_setup_particle(_ParticleAdaptor d, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
    CustomXYZR_setup_particle(Model m, ParticleIndex pi, double radius, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
    CustomXYZR_setup_particle(_ParticleAdaptor d, double radius, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
    CustomXYZR_setup_particle(Model m, ParticleIndex pi, Sphere3D ball, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
    CustomXYZR_setup_particle(_ParticleAdaptor d, Sphere3D ball, FloatKey tr=IMP::misc::CustomXYZR::get_default_decorator_traits()) -> CustomXYZR
    """
    return _IMP_misc.CustomXYZR_setup_particle(*args)

def CustomXYZR_get_is_setup(*args):
    r"""
    CustomXYZR_get_is_setup(_ParticleAdaptor p, FloatKey tr=IMP::core::XYZR::get_radius_key()) -> bool
    CustomXYZR_get_is_setup(Model m, ParticleIndex pi, FloatKey radius_key=get_default_radius_key()) -> bool
    """
    return _IMP_misc.CustomXYZR_get_is_setup(*args)

def CustomXYZR_get_default_radius_key():
    r"""CustomXYZR_get_default_radius_key() -> FloatKey"""
    return _IMP_misc.CustomXYZR_get_default_radius_key()


def __lshift__(out, n):
    r"""__lshift__(_ostream out, CustomXYZR n) -> _ostream"""
    return _IMP_misc.__lshift__(out, n)

def get_distance(a, b):
    r"""get_distance(CustomXYZR a, CustomXYZR b) -> double"""
    return _IMP_misc.get_distance(a, b)

def get_sphere_d_geometry(d):
    r"""get_sphere_d_geometry(CustomXYZR d) -> Sphere3D"""
    return _IMP_misc.get_sphere_d_geometry(d)

def set_sphere_d_geometry(d, v):
    r"""set_sphere_d_geometry(CustomXYZR d, Sphere3D v)"""
    return _IMP_misc.set_sphere_d_geometry(d, v)
class SoftCylinderPairScore(IMP.PairScore):
    r"""Proxy of C++ IMP::misc::SoftCylinderPairScore class."""

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

    def __init__(self, k):
        r"""__init__(SoftCylinderPairScore self, double k) -> SoftCylinderPairScore"""
        _IMP_misc.SoftCylinderPairScore_swiginit(self, _IMP_misc.new_SoftCylinderPairScore(k))

    def do_get_inputs(self, m, pis):
        r"""do_get_inputs(SoftCylinderPairScore self, Model m, IMP::ParticleIndexes const & pis) -> IMP::ModelObjectsTemp"""
        return _IMP_misc.SoftCylinderPairScore_do_get_inputs(self, m, pis)

    def get_version_info(self):
        r"""get_version_info(SoftCylinderPairScore self) -> VersionInfo"""
        return _IMP_misc.SoftCylinderPairScore_get_version_info(self)

    def __str__(self):
        r"""__str__(SoftCylinderPairScore self) -> std::string"""
        return _IMP_misc.SoftCylinderPairScore___str__(self)

    def __repr__(self):
        r"""__repr__(SoftCylinderPairScore self) -> std::string"""
        return _IMP_misc.SoftCylinderPairScore___repr__(self)

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


# Register SoftCylinderPairScore in _IMP_misc:
_IMP_misc.SoftCylinderPairScore_swigregister(SoftCylinderPairScore)

class DecayPairContainerOptimizerState(IMP.OptimizerState):
    r"""Proxy of C++ IMP::misc::DecayPairContainerOptimizerState 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__(DecayPairContainerOptimizerState self, Model m, PairPredicate pred, IMP::ParticleIndexPairs const & initial_list, std::string name="DecayPairContainerOptimizerState%1%") -> DecayPairContainerOptimizerState"""
        _IMP_misc.DecayPairContainerOptimizerState_swiginit(self, _IMP_misc.new_DecayPairContainerOptimizerState(*args))

    def get_output_container(self):
        r"""get_output_container(DecayPairContainerOptimizerState self) -> PairContainer"""
        return _IMP_misc.DecayPairContainerOptimizerState_get_output_container(self)

    def do_update(self, call_num):
        r"""do_update(DecayPairContainerOptimizerState self, unsigned int call_num)"""
        return _IMP_misc.DecayPairContainerOptimizerState_do_update(self, call_num)

    def get_version_info(self):
        r"""get_version_info(DecayPairContainerOptimizerState self) -> VersionInfo"""
        return _IMP_misc.DecayPairContainerOptimizerState_get_version_info(self)

    def __str__(self):
        r"""__str__(DecayPairContainerOptimizerState self) -> std::string"""
        return _IMP_misc.DecayPairContainerOptimizerState___str__(self)

    def __repr__(self):
        r"""__repr__(DecayPairContainerOptimizerState self) -> std::string"""
        return _IMP_misc.DecayPairContainerOptimizerState___repr__(self)

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


# Register DecayPairContainerOptimizerState in _IMP_misc:
_IMP_misc.DecayPairContainerOptimizerState_swigregister(DecayPairContainerOptimizerState)


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

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

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

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



