Source code for molpher.core.morphing.AtomLibrary


# Copyright (c) 2017 Martin Sicho
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

import molpher
from molpher.core.MolpherAtom import MolpherAtom
from molpher.core._utils import shorten_repr


[docs]class AtomLibrary(molpher.swig_wrappers.core.AtomLibrary): """ :param atoms: A set of atoms that defines the library. :type atoms: an iterable of :class:`~.morphing.AtomLibrary.AtomLibrary` instances, another :class:`~.morphing.AtomLibrary.AtomLibrary` instance or simply a list of atom symbols. """ def __init__(self, atoms): atoms_ = [] try: iter(atoms) if len(atoms) != 0: first = atoms[0] if type(first) == str: for atom in atoms: atoms_.append(MolpherAtom(atom)) else: raise RuntimeError("Atom list must not be empty.") except TypeError: pass super(AtomLibrary, self).__init__(atoms_ if atoms_ else atoms) def __repr__(self): return shorten_repr(self.__class__, self)
[docs] @staticmethod def getDefaultLibrary(): ret = molpher.swig_wrappers.core.AtomLibrary.getDefaultLibrary() ret.__class__ = AtomLibrary return ret
[docs] def getAtoms(self): ret = super(AtomLibrary, self).getAtoms() for x in ret: x.__class__ = MolpherAtom return ret
@property def atoms(self): return self.getAtoms()
[docs] def getRandomAtom(self): ret = super(AtomLibrary, self).getRandomAtom() ret.__class__ = MolpherAtom return ret