尝试增加Bond类. 参考pybel中的处理. 在openbabel中Bond相关的包括OBBond主类, OBBondvector 向量集, 三个迭代器: OBMolBondIter, OBMolBondBFSIter, OBAtomBondIter. 第一三个迭代器常用, 用于迭代分子中的键和原子相连的键. 参考OBBond的方法和属性可以加入很多新的功能
# -*. coding: utf-8 -*-
# Copyright (c) 2008-2012, Noel O'Boyle; 2012, Adrià Cereto-Massagué
# All rights reserved.
#
# This file is part of Cinfony.
# The contents are covered by the terms of the GPL v2 license
# which is included in the file LICENSE_GPLv2.txt.
#
# Zhixiong Zhao Revised based on 2015.10.10 version in Github
"""
pybel - A Cinfony module for accessing Open Babel
Global variables:
ob - the underlying SWIG bindings for Open Babel
informats - a dictionary of supported input formats
outformats - a dictionary of supported output formats
descs - a list of supported descriptors
fps - a list of supported fingerprint types
forcefields - a list of supported forcefields
"""
import sys
import os.path
import tempfile
import json
import uuid
import xml.etree.ElementTree as ET
if sys.platform[:4] == "java":
import org.openbabel as ob
import java.lang.System
java.lang.System.loadLibrary("openbabel_java")
_obfuncs = ob.openbabel_java
_obconsts = ob.openbabel_javaConstants
import javax
elif sys.platform[:3] == "cli":
import System
import clr
clr.AddReference('System.Windows.Forms')
clr.AddReference('System.Drawing')
from System.Windows.Forms import Application, DockStyle, Form, PictureBox
from System.Windows.Forms import PictureBoxSizeMode
from System.Drawing import Image, Size
_obdotnet = os.environ["OBDOTNET"]
if _obdotnet[0] == '"': # Remove trailing quotes
_obdotnet = _obdotnet[1:-1]
clr.AddReferenceToFileAndPath(os.path.join(_obdotnet, "OBDotNet.dll"))
import OpenBabel as ob
_obfuncs = ob.openbabel_csharp
_obconsts = ob.openbabel_csharp
else:
import openbabel as ob
_obfuncs = _obconsts = ob
try:
import Tkinter as tk
from PIL import Image as PIL
from PIL import ImageTk as piltk
except ImportError: # pragma: no cover
tk = None
def _formatstodict(list):
if sys.platform[:4] == "java":
list = [list.get(i) for i in range(list.size())]
broken = [x.replace("[Read-only]", "").replace("[Write-only]", "").split(
" -- ") for x in list]
broken = [(x, y.strip()) for x, y in broken]
return dict(broken)
def _getplugins(findplugin, names):
return dict([(x, findplugin(x)) for x in names if findplugin(x)])
def _getpluginnames(ptype):
if sys.platform[:4] == "cli":
plugins = ob.VectorString()
else:
plugins = ob.vectorString()
ob.OBPlugin.ListAsVector(ptype, None, plugins)
if sys.platform[:4] == "java":
plugins = [plugins.get(i) for i in range(plugins.size())]
return [x.split()[0] for x in plugins]
_obconv = ob.OBConversion()
_builder = ob.OBBuilder()
informats = _formatstodict(_obconv.GetSupportedInputFormat())
"""A dictionary of supported input formats"""
outformats = _formatstodict(_obconv.GetSupportedOutputFormat())
"""A dictionary of supported output formats"""
descs = _getpluginnames("descriptors")
"""A list of supported descriptors"""
_descdict = _getplugins(ob.OBDescriptor.FindType, descs)
fps = [_x.lower() for _x in _getpluginnames("fingerprints")]
"""A list of supported fingerprint types"""
_fingerprinters = _getplugins(ob.OBFingerprint.FindFingerprint, fps)
forcefields = [_x.lower() for _x in _getpluginnames("forcefields")]
"""A list of supported forcefields"""
_forcefields = _getplugins(ob.OBForceField.FindType, forcefields)
charges = [_x.lower() for _x in _getpluginnames("charges")]
"""A list of supported charge models"""
_charges = _getplugins(ob.OBChargeModel.FindType, charges)
operations = _getpluginnames("ops")
"""A list of supported operations"""
_operations = _getplugins(ob.OBOp.FindType, operations)
ipython_3d = False
"""Toggles 2D vs 3D molecule representations in IPython notebook"""
def readfile(format, filename, opt=None):
"""Iterate over the molecules in a file.
Required parameters:
format - see the informats variable for a list of available
input formats
filename
Optional parameters:
opt - a dictionary of format-specific options
For format options with no parameters, specify the
value as None.
You can access the first molecule in a file using the next() method
of the iterator (or the next() keyword in Python 3):
mol = readfile("smi", "myfile.smi").next() # Python 2
mol = next(readfile("smi", "myfile.smi")) # Python 3
You can make a list of the molecules in a file using:
mols = list(readfile("smi", "myfile.smi"))
You can iterate over the molecules in a file as shown in the
following code snippet:
>>> atomtotal = 0
>>> for mol in readfile("sdf", "head.sdf"):
... atomtotal += len(mol.atoms)
...
>>> print atomtotal
43
"""
if opt is None:
opt = {}
obconversion = ob.OBConversion()
formatok = obconversion.SetInFormat(format)
for k, v in opt.items():
if v is None:
obconversion.AddOption(k, obconversion.INOPTIONS)
else:
obconversion.AddOption(k, obconversion.INOPTIONS, str(v))
if not formatok:
raise ValueError("%s is not a recognised Open Babel format" % format)
if not os.path.isfile(filename):
raise IOError("No such file: '%s'" % filename)
def filereader():
obmol = ob.OBMol()
notatend = obconversion.ReadFile(obmol, filename)
while notatend:
yield Molecule(obmol)
obmol = ob.OBMol()
notatend = obconversion.Read(obmol)
return filereader()
def readstring(format, string, opt=None):
"""Read in a molecule from a string.
Required parameters:
format - see the informats variable for a list of available
input formats
string
Optional parameters:
opt - a dictionary of format-specific options
For format options with no parameters, specify the
value as None.
Example:
>>> input = "C1=CC=CS1"
>>> mymol = readstring("smi", input)
>>> len(mymol.atoms)
5
"""
if opt is None:
opt = {}
obmol = ob.OBMol()
obconversion = ob.OBConversion()
formatok = obconversion.SetInFormat(format)
if not formatok:
raise ValueError("%s is not a recognised Open Babel format" % format)
for k, v in opt.items():
if v is None:
obconversion.AddOption(k, obconversion.INOPTIONS)
else:
obconversion.AddOption(k, obconversion.INOPTIONS, str(v))
success = obconversion.ReadString(obmol, string)
if not success:
raise IOError("Failed to convert '%s' to format '%s'" % (
string, format))
return Molecule(obmol)
class Outputfile(object):
"""Represent a file to which *output* is to be sent.
Although it's possible to write a single molecule to a file by
calling the write() method of a molecule, if multiple molecules
are to be written to the same file you should use the Outputfile
class.
Required parameters:
format - see the outformats variable for a list of available
output formats
filename
Optional parameters:
overwrite -- if the output file already exists, should it
be overwritten? (default is False)
opt -- a dictionary of format-specific options
For format options with no parameters, specify the
value as None.
Methods:
write(molecule)
close()
"""
def __init__(self, format, filename, overwrite=False, opt=None):
if opt is None:
opt = {}
self.format = format
self.filename = filename
if not overwrite and os.path.isfile(self.filename):
raise IOError(
"%s already exists. Use 'overwrite=True' to overwrite it." %
self.filename)
self.obConversion = ob.OBConversion()
formatok = self.obConversion.SetOutFormat(self.format)
if not formatok:
raise ValueError("%s is not a recognised Open Babel format" %
format)
if filename and filename.split('.')[-1] == 'gz':
self.obConversion.AddOption('z', self.obConversion.GENOPTIONS)
for k, v in opt.items():
if v is None:
self.obConversion.AddOption(k, self.obConversion.OUTOPTIONS)
else:
self.obConversion.AddOption(k, self.obConversion.OUTOPTIONS, str(v))
self.total = 0 # The total number of molecules written to the file
def write(self, molecule):
"""Write a molecule to the output file.
Required parameters:
molecule
"""
if not self.filename:
raise IOError("Outputfile instance is closed.")
if self.total == 0:
self.obConversion.WriteFile(molecule.OBMol, self.filename)
else:
self.obConversion.Write(molecule.OBMol)
self.total += 1
def close(self):
"""Close the Outputfile to further writing."""
self.obConversion.CloseOutFile()
self.filename = None
class Molecule(object):
"""Represent a Pybel Molecule.
Required parameter:
OBMol -- an Open Babel OBMol or any type of cinfony Molecule
Attributes:
atoms, charge, conformers, data, dim, energy, exactmass, formula,
molwt, spin, sssr, title, unitcell.
(refer to the Open Babel library documentation for more info).
bonds,residues
Methods:
addh(), calcfp(), calcdesc(), draw(), localopt(), make3D(),
calccharges(), removeh(), write()
The underlying Open Babel molecule can be accessed using the attribute:
OBMol
"""
_cinfony = True
def __init__(self, OBMol):
if hasattr(OBMol, "_cinfony"):
a, b = OBMol._exchange
if a == 0:
mol = readstring("smi", b)
else:
mol = readstring("mol", b)
OBMol = mol.OBMol
self.OBMol = OBMol
@property
def atoms(self):
return [Atom(self.OBMol.GetAtom(i + 1))
for i in range(self.OBMol.NumAtoms())]
@property
def bonds(self):
return [Bond(bnd) for bnd in ob.OBMolBondIter(self.OBMol)]
@property
def residues(self):
return [Residue(res) for res in ob.OBResidueIter(self.OBMol)]
@property
def charge(self):
return self.OBMol.GetTotalCharge()
@property
def conformers(self):
return self.OBMol.GetConformers()
@property
def data(self):
return MoleculeData(self.OBMol)
@property
def dim(self):
return self.OBMol.GetDimension()
@property
def energy(self):
return self.OBMol.GetEnergy()
@property
def exactmass(self):
return self.OBMol.GetExactMass()
@property
def formula(self):
return self.OBMol.GetFormula()
@property
def molwt(self):
return self.OBMol.GetMolWt()
@property
def spin(self):
return self.OBMol.GetTotalSpinMultiplicity()
@property
def sssr(self):
return self.OBMol.GetSSSR()
def _gettitle(self):
return self.OBMol.GetTitle()
def _settitle(self, val):
self.OBMol.SetTitle(val)
title = property(_gettitle, _settitle)
@property
def unitcell(self):
unitcell_index = _obconsts.UnitCell
if sys.platform[:3] == "cli":
unitcell_index = System.UInt32(unitcell_index)
unitcell = self.OBMol.GetData(unitcell_index)
if unitcell:
if sys.platform[:3] != "cli":
return _obfuncs.toUnitCell(unitcell)
else:
return unitcell.Downcast[ob.OBUnitCell]()
else:
raise AttributeError("Molecule has no attribute 'unitcell'")
@property
def clone(self):
return Molecule(ob.OBMol(self.OBMol))
@property
def _exchange(self):
if self.OBMol.HasNonZeroCoords():
return (1, self.write("mol"))
else:
return (0, self.write("can").split()[0])
def __iter__(self):
"""Iterate over the Atoms of the Molecule.
This allows constructions such as the following:
for atom in mymol:
print atom
"""
return iter(self.atoms)
def _repr_svg_(self):
"""For IPython notebook, renders 2D pybel.Molecule SVGs."""
# Returning None defers to _repr_javascript_
if ipython_3d:
return None
# Open babel returns a nested svg, which IPython unpacks and treats as
# two SVGs, messing with the display location. This parses out the
# inner svg before handing over to IPython.
namespace = "http://www.w3.org/2000/svg"
ET.register_namespace("", namespace)
obsvg = self.clone.write("svg")
tree = ET.fromstring(obsvg)
svg = tree.find("{{{ns}}}g/{{{ns}}}svg".format(ns=namespace))
return ET.tostring(svg).decode("utf-8")
def _repr_html_(self):
"""For IPython notebook, renders 3D pybel.Molecule webGL objects."""
# Returning None defers to _repr_svg_
if not ipython_3d:
return None
try:
import imolecule
except ImportError:
raise ImportError("Cannot import 3D rendering. Please install "
"with `pip install imolecule`.")
return imolecule.draw(self.clone, format="pybel", display_html=False)
def calcdesc(self, descnames=[]):
"""Calculate descriptor values.
Optional parameter:
descnames -- a list of names of descriptors
If descnames is not specified, all available descriptors are
calculated. See the descs variable for a list of available
descriptors.
"""
if not descnames:
descnames = descs
ans = {}
for descname in descnames:
try:
desc = _descdict[descname]
except KeyError:
raise ValueError(("%s is not a recognised Open Babel "
"descriptor type") % descname)
ans[descname] = desc.Predict(self.OBMol)
return ans
def calcfp(self, fptype="FP2"):
"""Calculate a molecular fingerprint.
Optional parameters:
fptype -- the fingerprint type (default is "FP2"). See the
fps variable for a list of of available fingerprint
types.
"""
if sys.platform[:3] == "cli":
fp = ob.VectorUInt()
else:
fp = ob.vectorUnsignedInt()
fptype = fptype.lower()
try:
fingerprinter = _fingerprinters[fptype]
except KeyError:
raise ValueError(
"%s is not a recognised Open Babel Fingerprint type" % fptype)
fingerprinter.GetFingerprint(self.OBMol, fp)
return Fingerprint(fp)
def calccharges(self, model="mmff94"):
"""Estimates atomic partial charges in the molecule.
Optional parameters:
model -- default is "mmff94". See the charges variable for a list
of available charge models (in shell, `obabel -L charges`)
This method populates the `partialcharge` attribute of each atom
in the molecule in place.
"""
model = model.lower()
try:
charge_model = _charges[model]
except KeyError:
raise ValueError(
"%s is not a recognised Open Babel Charge Model type" % model)
success = charge_model.ComputeCharges(self.OBMol)
if not success:
errors = ob.obErrorLog.GetMessagesOfLevel(ob.obError)
error = errors[-1] if errors else "Molecule failed to charge."
raise Exception(error)
return [atom.partialcharge for atom in self.atoms]
def write(self, format="smi", filename=None, overwrite=False, opt=None):
"""Write the molecule to a file or return a string.
Optional parameters:
format -- see the informats variable for a list of available
output formats (default is "smi")
filename -- default is None
overwite -- if the output file already exists, should it
be overwritten? (default is False)
opt -- a dictionary of format specific options
For format options with no parameters, specify the
value as None.
If a filename is specified, the result is written to a file.
Otherwise, a string is returned containing the result.
To write multiple molecules to the same file you should use
the Outputfile class.
"""
if opt is None:
opt = {}
obconversion = ob.OBConversion()
formatok = obconversion.SetOutFormat(format)
if not formatok:
raise ValueError("%s is not a recognised Open Babel format" %
format)
if filename and filename.split('.')[-1] == 'gz':
obconversion.AddOption('z', self.obConversion.GENOPTIONS)
for k, v in opt.items():
if v is None:
obconversion.AddOption(k, obconversion.OUTOPTIONS)
else:
obconversion.AddOption(k, obconversion.OUTOPTIONS, str(v))
if filename:
if not overwrite and os.path.isfile(filename):
raise IOError(("%s already exists. Use 'overwrite=True' to "
"overwrite it.") % filename)
obconversion.WriteFile(self.OBMol, filename)
obconversion.CloseOutFile()
else:
return obconversion.WriteString(self.OBMol)
def localopt(self, forcefield="mmff94", steps=500):
"""Locally optimize the coordinates.
Optional parameters:
forcefield -- default is "mmff94". See the forcefields variable
for a list of available forcefields.
steps -- default is 500
If the molecule does not have any coordinates, make3D() is
called before the optimization. Note that the molecule needs
to have explicit hydrogens. If not, call addh().
"""
forcefield = forcefield.lower()
if self.dim != 3:
self.make3D(forcefield)
ff = _forcefields[forcefield]
success = ff.Setup(self.OBMol)
if not success:
return
ff.SteepestDescent(steps)
ff.GetCoordinates(self.OBMol)
def make3D(self, forcefield="mmff94", steps=50):
"""Generate 3D coordinates.
Optional parameters:
forcefield -- default is "mmff94". See the forcefields variable
for a list of available forcefields.
steps -- default is 50
Once coordinates are generated, hydrogens are added and a quick
local optimization is carried out with 50 steps and the
MMFF94 forcefield. Call localopt() if you want
to improve the coordinates further.
"""
forcefield = forcefield.lower()
_builder.Build(self.OBMol)
self.addh()
self.localopt(forcefield, steps)
def addh(self):
"""Add hydrogens."""
self.OBMol.AddHydrogens()
def removeh(self):
"""Remove hydrogens."""
self.OBMol.DeleteHydrogens()
def convertdbonds(self):
"""Convert Dative Bonds."""
self.OBMol.ConvertDativeBonds()
def __str__(self):
return self.write()
def draw(self, show=True, filename=None, update=False, usecoords=False):
"""Create a 2D depiction of the molecule.
Optional parameters:
show -- display on screen (default is True)
filename -- write to file (default is None)
update -- update the coordinates of the atoms to those
determined by the structure diagram generator
(default is False)
usecoords -- don't calculate 2D coordinates, just use
the current coordinates (default is False)
Tkinter and Python Imaging Library are required for image display.
"""
obconversion = ob.OBConversion()
formatok = obconversion.SetOutFormat("_png2")
if not formatok:
raise ImportError("PNG depiction support not found. You should "
"compile Open Babel with support for Cairo. See "
"installation instructions for more "
"information.")
# Need to copy to avoid removing hydrogens from self
workingmol = Molecule(ob.OBMol(self.OBMol))
workingmol.removeh()
if not usecoords:
_operations['gen2D'].Do(workingmol.OBMol)
if update:
if workingmol.OBMol.NumAtoms() != self.OBMol.NumAtoms():
raise RuntimeError("It is not possible to update the original "
"molecule with the calculated coordinates, "
"as the original molecule contains "
"explicit hydrogens for which no "
"coordinates have been calculated.")
else:
for i in range(workingmol.OBMol.NumAtoms()):
self.OBMol.GetAtom(i + 1).SetVector(
workingmol.OBMol.GetAtom(i + 1).GetVector())
if filename:
filedes = None
else:
if sys.platform[:3] == "cli" and show:
raise RuntimeError("It is only possible to show the molecule "
"if you provide a filename. The reason for "
"this is that I kept having problems "
"when using temporary files.")
filedes, filename = tempfile.mkstemp()
workingmol.write("_png2", filename=filename, overwrite=True)
if show:
if sys.platform[:4] == "java":
image = javax.imageio.ImageIO.read(java.io.File(filename))
frame = javax.swing.JFrame(visible=1)
frame.getContentPane().add(
javax.swing.JLabel(javax.swing.ImageIcon(image)))
frame.setSize(300, 300)
frame.setDefaultCloseOperation(
javax.swing.WindowConstants.DISPOSE_ON_CLOSE)
frame.show()
elif sys.platform[:3] == "cli":
form = _MyForm()
form.setup(filename, self.title)
Application.Run(form)
else:
if not tk:
raise ImportError("Tkinter or Python Imaging Library not "
"found, but is required for image "
"display. See installation instructions "
"for more information.")
root = tk.Tk()
root.title((hasattr(self, "title") and self.title)
or self.__str__().rstrip())
frame = tk.Frame(root, colormap="new",
visual='truecolor').pack()
image = PIL.open(filename)
imagedata = piltk.PhotoImage(image)
tk.Label(frame, image=imagedata).pack()
tk.Button(root, text="Close", command=root.destroy).pack(
fill=tk.X)
root.mainloop()
if filedes:
os.close(filedes)
os.remove(filename)
class Atom(object):
"""Represent a Pybel atom.
Required parameter:
OBAtom -- an Open Babel OBAtom
Attributes:
atomicmass, atomicnum, cidx, coords, coordidx, exactmass,
formalcharge, heavyvalence, heterovalence, hyb, idx,
implicitvalence, isotope, partialcharge, residue, spin, type,
valence, vector.
(refer to the Open Babel library documentation for more info).
The original Open Babel atom can be accessed using the attribute:
OBAtom
"""
def __init__(self, OBAtom):
self.OBAtom = OBAtom
@property
def coords(self):
return (self.OBAtom.GetX(), self.OBAtom.GetY(), self.OBAtom.GetZ())
@property
def atomicmass(self):
return self.OBAtom.GetAtomicMass()
@property
def atomicnum(self):
return self.OBAtom.GetAtomicNum()
@property
def cidx(self):
return self.OBAtom.GetCIdx()
@property
def coordidx(self):
return self.OBAtom.GetCoordinateIdx()
@property
def exactmass(self):
return self.OBAtom.GetExactMass()
@property
def formalcharge(self):
return self.OBAtom.GetFormalCharge()
@property
def heavyvalence(self):
return self.OBAtom.GetHvyValence()
@property
def heterovalence(self):
return self.OBAtom.GetHeteroValence()
@property
def hyb(self):
return self.OBAtom.GetHyb()
@property
def idx(self):
return self.OBAtom.GetIdx()
@property
def implicitvalence(self):
return self.OBAtom.GetImplicitValence()
@property
def isotope(self):
return self.OBAtom.GetIsotope()
@property
def partialcharge(self):
return self.OBAtom.GetPartialCharge()
@property
def residue(self):
return Residue(self.OBAtom.GetResidue())
@property
def spin(self):
return self.OBAtom.GetSpinMultiplicity()
@property
def type(self):
return self.OBAtom.GetType()
@property
def valence(self):
return self.OBAtom.GetValence()
@property
def vector(self):
return self.OBAtom.GetVector()
def __str__(self):
c = self.coords
return "Atom: %d (%.2f %.2f %.2f)" % (self.atomicnum, c[0], c[1], c[2])
class Residue(object):
"""Represent a Pybel residue.
Required parameter:
OBResidue -- an Open Babel OBResidue
Attributes:
atoms, idx, name.
(refer to the Open Babel library documentation for more info).
The original Open Babel residue can be accessed using the attribute:
OBResidue
"""
def __init__(self, OBResidue):
self.OBResidue = OBResidue
@property
def atoms(self):
return [Atom(atom) for atom in ob.OBResidueAtomIter(self.OBResidue)]
@property
def idx(self):
return self.OBResidue.GetIdx()
@property
def name(self):
return self.OBResidue.GetName()
def __iter__(self):
"""Iterate over the Atoms of the Residue.
This allows constructions such as the following:
for atom in residue:
print atom
"""
return iter(self.atoms)
class Bond(object):
"""Represent a Pybel bond.
Required parameter:
OBBond -- an Open Babel OBBond
Attributes:
bgn, end, length, bo, bondorder, idx, IsAromatic, IsInRing, IsSingle, IsDouble, IsTriple.
(refer to the Open Babel library documentation for more info).
The original Open Babel bond can be accessed using the attribute:
OBBond
"""
def __init__(self, OBBond):
self.OBBond = OBBond;
@property
def bgn(self):
return Atom(self.OBBond.GetBeginAtom())
@property
def end(self):
return Atom(self.OBBond.GetEndAtom())
@property
def idx(self):
return self.OBBond.GetIdx()
@property
def length(self):
return self.OBBond.GetLength()
def __iter__(self):
"""Iterate over the Atoms of the bond.
This allows constructions such as the following:
for atom in bond:
print atom
"""
return iter([self.bgn,self.end])
def _findbits(fp, bitsperint):
"""Find which bits are set in a list/vector.
This function is used by the Fingerprint class.
>>> _findbits([13, 71], 8)
[1, 3, 4, 9, 10, 11, 15]
"""
ans = []
start = 1
if sys.platform[:4] == "java":
fp = [fp.get(i) for i in range(fp.size())]
for x in fp:
i = start
while x > 0:
if x % 2:
ans.append(i)
x >>= 1
i += 1
start += bitsperint
return ans
class Fingerprint(object):
"""A Molecular Fingerprint.
Required parameters:
fingerprint -- a vector calculated by OBFingerprint.FindFingerprint()
Attributes:
fp -- the underlying fingerprint object
bits -- a list of bits set in the Fingerprint
Methods:
The "|" operator can be used to calculate the Tanimoto coeff. For
example, given two Fingerprints 'a', and 'b', the Tanimoto coefficient
is given by:
tanimoto = a | b
"""
def __init__(self, fingerprint):
self.fp = fingerprint
def __or__(self, other):
return ob.OBFingerprint.Tanimoto(self.fp, other.fp)
@property
def bits(self):
return _findbits(self.fp, ob.OBFingerprint.Getbitsperint())
def __str__(self):
fp = self.fp
if sys.platform[:4] == "java":
fp = [self.fp.get(i) for i in range(self.fp.size())]
return ", ".join([str(x) for x in fp])
class Smarts(object):
"""A Smarts Pattern Matcher
Required parameters:
smartspattern
Methods:
findall(molecule)
Example:
>>> mol = readstring("smi","CCN(CC)CC") # triethylamine
>>> smarts = Smarts("[#6][#6]") # Matches an ethyl group
>>> print smarts.findall(mol)
[(1, 2), (4, 5), (6, 7)]
The numbers returned are the indices (starting from 1) of the atoms
that match the SMARTS pattern. In this case, there are three matches
for each of the three ethyl groups in the molecule.
"""
def __init__(self, smartspattern):
"""Initialise with a SMARTS pattern."""
self.obsmarts = ob.OBSmartsPattern()
success = self.obsmarts.Init(smartspattern)
if not success:
raise IOError("Invalid SMARTS pattern")
def findall(self, molecule):
"""Find all matches of the SMARTS pattern to a particular molecule.
Required parameters:
molecule
"""
self.obsmarts.Match(molecule.OBMol)
vector = self.obsmarts.GetUMapList()
if sys.platform[:4] == "java":
vector = [vector.get(i) for i in range(vector.size())]
return list(vector)
class MoleculeData(object):
"""Store molecule data in a dictionary-type object
Required parameters:
obmol -- an Open Babel OBMol
Methods and accessor methods are like those of a dictionary except
that the data is retrieved on-the-fly from the underlying OBMol.
Example:
>>> mol = readfile("sdf", 'head.sdf').next() # Python 2
>>> # mol = next(readfile("sdf", 'head.sdf')) # Python 3
>>> data = mol.data
>>> print data
{'Comment': 'CORINA 2.61 0041 25.10.2001', 'NSC': '1'}
>>> print len(data), data.keys(), data.has_key("NSC")
2 ['Comment', 'NSC'] True
>>> print data['Comment']
CORINA 2.61 0041 25.10.2001
>>> data['Comment'] = 'This is a new comment'
>>> for k,v in data.items():
... print k, "-->", v
Comment --> This is a new comment
NSC --> 1
>>> del data['NSC']
>>> print len(data), data.keys(), data.has_key("NSC")
1 ['Comment'] False
"""
def __init__(self, obmol):
self._mol = obmol
def _data(self):
data = self._mol.GetData()
if sys.platform[:4] == "java":
data = [data.get(i) for i in range(data.size())]
answer = [x for x in data if
x.GetDataType() == _obconsts.PairData or
x.GetDataType() == _obconsts.CommentData]
if sys.platform[:3] != "cli":
answer = [_obfuncs.toPairData(x) for x in answer]
return answer
def _testforkey(self, key):
if key not in self:
raise KeyError("'%s'" % key)
def keys(self):
return [x.GetAttribute() for x in self._data()]
def values(self):
return [x.GetValue() for x in self._data()]
def items(self):
return iter(zip(self.keys(), self.values()))
def __iter__(self):
return iter(self.keys())
def iteritems(self): # Can remove for Python 3
return self.items()
def __len__(self):
return len(self._data())
def __contains__(self, key):
return self._mol.HasData(key)
def __delitem__(self, key):
self._testforkey(key)
self._mol.DeleteData(self._mol.GetData(key))
def clear(self):
for key in self:
del self[key]
def has_key(self, key):
return key in self
def update(self, dictionary):
for k, v in dictionary.items():
self[k] = v
def __getitem__(self, key):
self._testforkey(key)
answer = self._mol.GetData(key)
if sys.platform[:3] != "cli":
answer = _obfuncs.toPairData(answer)
return answer.GetValue()
def __setitem__(self, key, value):
if key in self:
if sys.platform[:3] != "cli":
pairdata = _obfuncs.toPairData(self._mol.GetData(key))
else:
pairdata = self._mol.GetData(key).Downcast[ob.OBPairData]()
pairdata.SetValue(str(value))
else:
pairdata = ob.OBPairData()
pairdata.SetAttribute(key)
pairdata.SetValue(str(value))
self._mol.CloneData(pairdata)
def __repr__(self):
return dict(self.items()).__repr__()
if sys.platform[:3] == "cli":
class _MyForm(Form):
def __init__(self):
Form.__init__(self)
def setup(self, filename, title):
# adjust the form's client area size to the picture
self.ClientSize = Size(300, 300)
self.Text = title
self.filename = filename
self.image = Image.FromFile(self.filename)
pictureBox = PictureBox()
# this will fit the image to the form
pictureBox.SizeMode = PictureBoxSizeMode.StretchImage
pictureBox.Image = self.image
# fit the picture box to the frame
pictureBox.Dock = DockStyle.Fill
self.Controls.Add(pictureBox)
self.Show()
if __name__ == "__main__": # pragma: no cover
import doctest
doctest.testmod(verbose=True)
openbabel.py中Bond相关
# OBBond class and relative in bond.h
_openbabel.OB_AROMATIC_BOND_swigconstant(_openbabel)
OB_AROMATIC_BOND = _openbabel.OB_AROMATIC_BOND
_openbabel.OB_WEDGE_BOND_swigconstant(_openbabel)
OB_WEDGE_BOND = _openbabel.OB_WEDGE_BOND
_openbabel.OB_HASH_BOND_swigconstant(_openbabel)
OB_HASH_BOND = _openbabel.OB_HASH_BOND
_openbabel.OB_RING_BOND_swigconstant(_openbabel)
OB_RING_BOND = _openbabel.OB_RING_BOND
_openbabel.OB_TORUP_BOND_swigconstant(_openbabel)
OB_TORUP_BOND = _openbabel.OB_TORUP_BOND
_openbabel.OB_TORDOWN_BOND_swigconstant(_openbabel)
OB_TORDOWN_BOND = _openbabel.OB_TORDOWN_BOND
_openbabel.OB_KSINGLE_BOND_swigconstant(_openbabel)
OB_KSINGLE_BOND = _openbabel.OB_KSINGLE_BOND
_openbabel.OB_KDOUBLE_BOND_swigconstant(_openbabel)
OB_KDOUBLE_BOND = _openbabel.OB_KDOUBLE_BOND
_openbabel.OB_KTRIPLE_BOND_swigconstant(_openbabel)
OB_KTRIPLE_BOND = _openbabel.OB_KTRIPLE_BOND
_openbabel.OB_CLOSURE_BOND_swigconstant(_openbabel)
OB_CLOSURE_BOND = _openbabel.OB_CLOSURE_BOND
_openbabel.OB_WEDGE_OR_HASH_BOND_swigconstant(_openbabel)
OB_WEDGE_OR_HASH_BOND = _openbabel.OB_WEDGE_OR_HASH_BOND
_openbabel.OB_CIS_OR_TRANS_BOND_swigconstant(_openbabel)
OB_CIS_OR_TRANS_BOND = _openbabel.OB_CIS_OR_TRANS_BOND
class OBBond(OBBase):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
Aromatic = _openbabel.OBBond_Aromatic
Ring = _openbabel.OBBond_Ring
Closure = _openbabel.OBBond_Closure
Wedge = _openbabel.OBBond_Wedge
Hash = _openbabel.OBBond_Hash
WedgeOrHash = _openbabel.OBBond_WedgeOrHash
CisOrTrans = _openbabel.OBBond_CisOrTrans
Visit = _swig_property(_openbabel.OBBond_Visit_get, _openbabel.OBBond_Visit_set)
def __init__(self):
_openbabel.OBBond_swiginit(self, _openbabel.new_OBBond())
__swig_destroy__ = _openbabel.delete_OBBond
OBBond.SetIdx = new_instancemethod(_openbabel.OBBond_SetIdx, None, OBBond)
OBBond.SetId = new_instancemethod(_openbabel.OBBond_SetId, None, OBBond)
OBBond.SetBO = new_instancemethod(_openbabel.OBBond_SetBO, None, OBBond)
OBBond.SetBondOrder = new_instancemethod(_openbabel.OBBond_SetBondOrder, None, OBBond)
OBBond.SetBegin = new_instancemethod(_openbabel.OBBond_SetBegin, None, OBBond)
OBBond.SetEnd = new_instancemethod(_openbabel.OBBond_SetEnd, None, OBBond)
OBBond.SetParent = new_instancemethod(_openbabel.OBBond_SetParent, None, OBBond)
OBBond.SetLength = new_instancemethod(_openbabel.OBBond_SetLength, None, OBBond)
OBBond.Set = new_instancemethod(_openbabel.OBBond_Set, None, OBBond)
OBBond.SetKSingle = new_instancemethod(_openbabel.OBBond_SetKSingle, None, OBBond)
OBBond.SetKDouble = new_instancemethod(_openbabel.OBBond_SetKDouble, None, OBBond)
OBBond.SetKTriple = new_instancemethod(_openbabel.OBBond_SetKTriple, None, OBBond)
OBBond.SetAromatic = new_instancemethod(_openbabel.OBBond_SetAromatic, None, OBBond)
OBBond.SetWedge = new_instancemethod(_openbabel.OBBond_SetWedge, None, OBBond)
OBBond.SetHash = new_instancemethod(_openbabel.OBBond_SetHash, None, OBBond)
OBBond.SetWedgeOrHash = new_instancemethod(_openbabel.OBBond_SetWedgeOrHash, None, OBBond)
OBBond.SetUp = new_instancemethod(_openbabel.OBBond_SetUp, None, OBBond)
OBBond.SetDown = new_instancemethod(_openbabel.OBBond_SetDown, None, OBBond)
OBBond.SetInRing = new_instancemethod(_openbabel.OBBond_SetInRing, None, OBBond)
OBBond.SetClosure = new_instancemethod(_openbabel.OBBond_SetClosure, None, OBBond)
OBBond.UnsetHash = new_instancemethod(_openbabel.OBBond_UnsetHash, None, OBBond)
OBBond.UnsetWedge = new_instancemethod(_openbabel.OBBond_UnsetWedge, None, OBBond)
OBBond.UnsetUp = new_instancemethod(_openbabel.OBBond_UnsetUp, None, OBBond)
OBBond.UnsetDown = new_instancemethod(_openbabel.OBBond_UnsetDown, None, OBBond)
OBBond.UnsetAromatic = new_instancemethod(_openbabel.OBBond_UnsetAromatic, None, OBBond)
OBBond.UnsetKekule = new_instancemethod(_openbabel.OBBond_UnsetKekule, None, OBBond)
OBBond.GetIdx = new_instancemethod(_openbabel.OBBond_GetIdx, None, OBBond)
OBBond.GetId = new_instancemethod(_openbabel.OBBond_GetId, None, OBBond)
OBBond.GetBO = new_instancemethod(_openbabel.OBBond_GetBO, None, OBBond)
OBBond.GetBondOrder = new_instancemethod(_openbabel.OBBond_GetBondOrder, None, OBBond)
OBBond.GetFlags = new_instancemethod(_openbabel.OBBond_GetFlags, None, OBBond)
OBBond.GetBeginAtomIdx = new_instancemethod(_openbabel.OBBond_GetBeginAtomIdx, None, OBBond)
OBBond.GetEndAtomIdx = new_instancemethod(_openbabel.OBBond_GetEndAtomIdx, None, OBBond)
OBBond.GetBeginAtom = new_instancemethod(_openbabel.OBBond_GetBeginAtom, None, OBBond)
OBBond.GetEndAtom = new_instancemethod(_openbabel.OBBond_GetEndAtom, None, OBBond)
OBBond.GetNbrAtom = new_instancemethod(_openbabel.OBBond_GetNbrAtom, None, OBBond)
OBBond.GetParent = new_instancemethod(_openbabel.OBBond_GetParent, None, OBBond)
OBBond.GetEquibLength = new_instancemethod(_openbabel.OBBond_GetEquibLength, None, OBBond)
OBBond.GetLength = new_instancemethod(_openbabel.OBBond_GetLength, None, OBBond)
OBBond.GetNbrAtomIdx = new_instancemethod(_openbabel.OBBond_GetNbrAtomIdx, None, OBBond)
OBBond.FindSmallestRing = new_instancemethod(_openbabel.OBBond_FindSmallestRing, None, OBBond)
OBBond.IsAromatic = new_instancemethod(_openbabel.OBBond_IsAromatic, None, OBBond)
OBBond.IsInRing = new_instancemethod(_openbabel.OBBond_IsInRing, None, OBBond)
OBBond.IsRotor = new_instancemethod(_openbabel.OBBond_IsRotor, None, OBBond)
OBBond.IsAmide = new_instancemethod(_openbabel.OBBond_IsAmide, None, OBBond)
OBBond.IsPrimaryAmide = new_instancemethod(_openbabel.OBBond_IsPrimaryAmide, None, OBBond)
OBBond.IsSecondaryAmide = new_instancemethod(_openbabel.OBBond_IsSecondaryAmide, None, OBBond)
OBBond.IsTertiaryAmide = new_instancemethod(_openbabel.OBBond_IsTertiaryAmide, None, OBBond)
OBBond.IsAmidine = new_instancemethod(_openbabel.OBBond_IsAmidine, None, OBBond)
OBBond.IsEster = new_instancemethod(_openbabel.OBBond_IsEster, None, OBBond)
OBBond.IsCarbonyl = new_instancemethod(_openbabel.OBBond_IsCarbonyl, None, OBBond)
OBBond.IsImide = new_instancemethod(_openbabel.OBBond_IsImide, None, OBBond)
OBBond.IsSingle = new_instancemethod(_openbabel.OBBond_IsSingle, None, OBBond)
OBBond.IsDouble = new_instancemethod(_openbabel.OBBond_IsDouble, None, OBBond)
OBBond.IsTriple = new_instancemethod(_openbabel.OBBond_IsTriple, None, OBBond)
OBBond.IsKSingle = new_instancemethod(_openbabel.OBBond_IsKSingle, None, OBBond)
OBBond.IsKDouble = new_instancemethod(_openbabel.OBBond_IsKDouble, None, OBBond)
OBBond.IsKTriple = new_instancemethod(_openbabel.OBBond_IsKTriple, None, OBBond)
OBBond.IsClosure = new_instancemethod(_openbabel.OBBond_IsClosure, None, OBBond)
OBBond.IsUp = new_instancemethod(_openbabel.OBBond_IsUp, None, OBBond)
OBBond.IsDown = new_instancemethod(_openbabel.OBBond_IsDown, None, OBBond)
OBBond.IsWedge = new_instancemethod(_openbabel.OBBond_IsWedge, None, OBBond)
OBBond.IsHash = new_instancemethod(_openbabel.OBBond_IsHash, None, OBBond)
OBBond.IsWedgeOrHash = new_instancemethod(_openbabel.OBBond_IsWedgeOrHash, None, OBBond)
OBBond.IsCisOrTrans = new_instancemethod(_openbabel.OBBond_IsCisOrTrans, None, OBBond)
OBBond.IsDoubleBondGeometry = new_instancemethod(_openbabel.OBBond_IsDoubleBondGeometry, None, OBBond)
OBBond_swigregister = _openbabel.OBBond_swigregister
OBBond_swigregister(OBBond)
# Bonds in vector
class vectorOBBond(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
def __iter__(self):
return self.iterator()
def __init__(self, *args):
_openbabel.vectorOBBond_swiginit(self, _openbabel.new_vectorOBBond(*args))
__swig_destroy__ = _openbabel.delete_vectorOBBond
vectorOBBond.iterator = new_instancemethod(_openbabel.vectorOBBond_iterator, None, vectorOBBond)
vectorOBBond.__nonzero__ = new_instancemethod(_openbabel.vectorOBBond___nonzero__, None, vectorOBBond)
vectorOBBond.__bool__ = new_instancemethod(_openbabel.vectorOBBond___bool__, None, vectorOBBond)
vectorOBBond.__len__ = new_instancemethod(_openbabel.vectorOBBond___len__, None, vectorOBBond)
vectorOBBond.__getslice__ = new_instancemethod(_openbabel.vectorOBBond___getslice__, None, vectorOBBond)
vectorOBBond.__setslice__ = new_instancemethod(_openbabel.vectorOBBond___setslice__, None, vectorOBBond)
vectorOBBond.__delslice__ = new_instancemethod(_openbabel.vectorOBBond___delslice__, None, vectorOBBond)
vectorOBBond.__delitem__ = new_instancemethod(_openbabel.vectorOBBond___delitem__, None, vectorOBBond)
vectorOBBond.__getitem__ = new_instancemethod(_openbabel.vectorOBBond___getitem__, None, vectorOBBond)
vectorOBBond.__setitem__ = new_instancemethod(_openbabel.vectorOBBond___setitem__, None, vectorOBBond)
vectorOBBond_swigregister = _openbabel.vectorOBBond_swigregister
vectorOBBond_swigregister(vectorOBBond)
# Bond in mol Iterator
class _OBMolBondIter(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
def __init__(self, *args):
_openbabel._OBMolBondIter_swiginit(self, _openbabel.new__OBMolBondIter(*args))
__swig_destroy__ = _openbabel.delete__OBMolBondIter
def __nonzero__(self):
return _openbabel._OBMolBondIter___nonzero__(self)
__bool__ = __nonzero__
Visit = _swig_property(_openbabel._OBMolBondIter_Visit_get, _openbabel._OBMolBondIter_Visit_set)
_OBMolBondIter.inc = new_instancemethod(_openbabel._OBMolBondIter_inc, None, _OBMolBondIter)
_OBMolBondIter.__deref__ = new_instancemethod(_openbabel._OBMolBondIter___deref__, None, _OBMolBondIter)
_OBMolBondIter.__ref__ = new_instancemethod(_openbabel._OBMolBondIter___ref__, None, _OBMolBondIter)
_OBMolBondIter.SetIdx = new_instancemethod(_openbabel._OBMolBondIter_SetIdx, None, _OBMolBondIter)
_OBMolBondIter.SetId = new_instancemethod(_openbabel._OBMolBondIter_SetId, None, _OBMolBondIter)
_OBMolBondIter.SetBO = new_instancemethod(_openbabel._OBMolBondIter_SetBO, None, _OBMolBondIter)
_OBMolBondIter.SetBondOrder = new_instancemethod(_openbabel._OBMolBondIter_SetBondOrder, None, _OBMolBondIter)
_OBMolBondIter.SetBegin = new_instancemethod(_openbabel._OBMolBondIter_SetBegin, None, _OBMolBondIter)
_OBMolBondIter.SetEnd = new_instancemethod(_openbabel._OBMolBondIter_SetEnd, None, _OBMolBondIter)
_OBMolBondIter.SetParent = new_instancemethod(_openbabel._OBMolBondIter_SetParent, None, _OBMolBondIter)
_OBMolBondIter.SetLength = new_instancemethod(_openbabel._OBMolBondIter_SetLength, None, _OBMolBondIter)
_OBMolBondIter.Set = new_instancemethod(_openbabel._OBMolBondIter_Set, None, _OBMolBondIter)
_OBMolBondIter.SetKSingle = new_instancemethod(_openbabel._OBMolBondIter_SetKSingle, None, _OBMolBondIter)
_OBMolBondIter.SetKDouble = new_instancemethod(_openbabel._OBMolBondIter_SetKDouble, None, _OBMolBondIter)
_OBMolBondIter.SetKTriple = new_instancemethod(_openbabel._OBMolBondIter_SetKTriple, None, _OBMolBondIter)
_OBMolBondIter.SetAromatic = new_instancemethod(_openbabel._OBMolBondIter_SetAromatic, None, _OBMolBondIter)
_OBMolBondIter.SetWedge = new_instancemethod(_openbabel._OBMolBondIter_SetWedge, None, _OBMolBondIter)
_OBMolBondIter.SetHash = new_instancemethod(_openbabel._OBMolBondIter_SetHash, None, _OBMolBondIter)
_OBMolBondIter.SetWedgeOrHash = new_instancemethod(_openbabel._OBMolBondIter_SetWedgeOrHash, None, _OBMolBondIter)
_OBMolBondIter.SetUp = new_instancemethod(_openbabel._OBMolBondIter_SetUp, None, _OBMolBondIter)
_OBMolBondIter.SetDown = new_instancemethod(_openbabel._OBMolBondIter_SetDown, None, _OBMolBondIter)
_OBMolBondIter.SetInRing = new_instancemethod(_openbabel._OBMolBondIter_SetInRing, None, _OBMolBondIter)
_OBMolBondIter.SetClosure = new_instancemethod(_openbabel._OBMolBondIter_SetClosure, None, _OBMolBondIter)
_OBMolBondIter.UnsetHash = new_instancemethod(_openbabel._OBMolBondIter_UnsetHash, None, _OBMolBondIter)
_OBMolBondIter.UnsetWedge = new_instancemethod(_openbabel._OBMolBondIter_UnsetWedge, None, _OBMolBondIter)
_OBMolBondIter.UnsetUp = new_instancemethod(_openbabel._OBMolBondIter_UnsetUp, None, _OBMolBondIter)
_OBMolBondIter.UnsetDown = new_instancemethod(_openbabel._OBMolBondIter_UnsetDown, None, _OBMolBondIter)
_OBMolBondIter.UnsetAromatic = new_instancemethod(_openbabel._OBMolBondIter_UnsetAromatic, None, _OBMolBondIter)
_OBMolBondIter.UnsetKekule = new_instancemethod(_openbabel._OBMolBondIter_UnsetKekule, None, _OBMolBondIter)
_OBMolBondIter.GetIdx = new_instancemethod(_openbabel._OBMolBondIter_GetIdx, None, _OBMolBondIter)
_OBMolBondIter.GetId = new_instancemethod(_openbabel._OBMolBondIter_GetId, None, _OBMolBondIter)
_OBMolBondIter.GetBO = new_instancemethod(_openbabel._OBMolBondIter_GetBO, None, _OBMolBondIter)
_OBMolBondIter.GetBondOrder = new_instancemethod(_openbabel._OBMolBondIter_GetBondOrder, None, _OBMolBondIter)
_OBMolBondIter.GetFlags = new_instancemethod(_openbabel._OBMolBondIter_GetFlags, None, _OBMolBondIter)
_OBMolBondIter.GetBeginAtomIdx = new_instancemethod(_openbabel._OBMolBondIter_GetBeginAtomIdx, None, _OBMolBondIter)
_OBMolBondIter.GetEndAtomIdx = new_instancemethod(_openbabel._OBMolBondIter_GetEndAtomIdx, None, _OBMolBondIter)
_OBMolBondIter.GetBeginAtom = new_instancemethod(_openbabel._OBMolBondIter_GetBeginAtom, None, _OBMolBondIter)
_OBMolBondIter.GetEndAtom = new_instancemethod(_openbabel._OBMolBondIter_GetEndAtom, None, _OBMolBondIter)
_OBMolBondIter.GetNbrAtom = new_instancemethod(_openbabel._OBMolBondIter_GetNbrAtom, None, _OBMolBondIter)
_OBMolBondIter.GetParent = new_instancemethod(_openbabel._OBMolBondIter_GetParent, None, _OBMolBondIter)
_OBMolBondIter.GetEquibLength = new_instancemethod(_openbabel._OBMolBondIter_GetEquibLength, None, _OBMolBondIter)
_OBMolBondIter.GetLength = new_instancemethod(_openbabel._OBMolBondIter_GetLength, None, _OBMolBondIter)
_OBMolBondIter.GetNbrAtomIdx = new_instancemethod(_openbabel._OBMolBondIter_GetNbrAtomIdx, None, _OBMolBondIter)
_OBMolBondIter.FindSmallestRing = new_instancemethod(_openbabel._OBMolBondIter_FindSmallestRing, None, _OBMolBondIter)
_OBMolBondIter.IsAromatic = new_instancemethod(_openbabel._OBMolBondIter_IsAromatic, None, _OBMolBondIter)
_OBMolBondIter.IsInRing = new_instancemethod(_openbabel._OBMolBondIter_IsInRing, None, _OBMolBondIter)
_OBMolBondIter.IsRotor = new_instancemethod(_openbabel._OBMolBondIter_IsRotor, None, _OBMolBondIter)
_OBMolBondIter.IsAmide = new_instancemethod(_openbabel._OBMolBondIter_IsAmide, None, _OBMolBondIter)
_OBMolBondIter.IsPrimaryAmide = new_instancemethod(_openbabel._OBMolBondIter_IsPrimaryAmide, None, _OBMolBondIter)
_OBMolBondIter.IsSecondaryAmide = new_instancemethod(_openbabel._OBMolBondIter_IsSecondaryAmide, None, _OBMolBondIter)
_OBMolBondIter.IsTertiaryAmide = new_instancemethod(_openbabel._OBMolBondIter_IsTertiaryAmide, None, _OBMolBondIter)
_OBMolBondIter.IsAmidine = new_instancemethod(_openbabel._OBMolBondIter_IsAmidine, None, _OBMolBondIter)
_OBMolBondIter.IsEster = new_instancemethod(_openbabel._OBMolBondIter_IsEster, None, _OBMolBondIter)
_OBMolBondIter.IsCarbonyl = new_instancemethod(_openbabel._OBMolBondIter_IsCarbonyl, None, _OBMolBondIter)
_OBMolBondIter.IsImide = new_instancemethod(_openbabel._OBMolBondIter_IsImide, None, _OBMolBondIter)
_OBMolBondIter.IsSingle = new_instancemethod(_openbabel._OBMolBondIter_IsSingle, None, _OBMolBondIter)
_OBMolBondIter.IsDouble = new_instancemethod(_openbabel._OBMolBondIter_IsDouble, None, _OBMolBondIter)
_OBMolBondIter.IsTriple = new_instancemethod(_openbabel._OBMolBondIter_IsTriple, None, _OBMolBondIter)
_OBMolBondIter.IsKSingle = new_instancemethod(_openbabel._OBMolBondIter_IsKSingle, None, _OBMolBondIter)
_OBMolBondIter.IsKDouble = new_instancemethod(_openbabel._OBMolBondIter_IsKDouble, None, _OBMolBondIter)
_OBMolBondIter.IsKTriple = new_instancemethod(_openbabel._OBMolBondIter_IsKTriple, None, _OBMolBondIter)
_OBMolBondIter.IsClosure = new_instancemethod(_openbabel._OBMolBondIter_IsClosure, None, _OBMolBondIter)
_OBMolBondIter.IsUp = new_instancemethod(_openbabel._OBMolBondIter_IsUp, None, _OBMolBondIter)
_OBMolBondIter.IsDown = new_instancemethod(_openbabel._OBMolBondIter_IsDown, None, _OBMolBondIter)
_OBMolBondIter.IsWedge = new_instancemethod(_openbabel._OBMolBondIter_IsWedge, None, _OBMolBondIter)
_OBMolBondIter.IsHash = new_instancemethod(_openbabel._OBMolBondIter_IsHash, None, _OBMolBondIter)
_OBMolBondIter.IsWedgeOrHash = new_instancemethod(_openbabel._OBMolBondIter_IsWedgeOrHash, None, _OBMolBondIter)
_OBMolBondIter.IsCisOrTrans = new_instancemethod(_openbabel._OBMolBondIter_IsCisOrTrans, None, _OBMolBondIter)
_OBMolBondIter.IsDoubleBondGeometry = new_instancemethod(_openbabel._OBMolBondIter_IsDoubleBondGeometry, None, _OBMolBondIter)
_OBMolBondIter.Clear = new_instancemethod(_openbabel._OBMolBondIter_Clear, None, _OBMolBondIter)
_OBMolBondIter.DoTransformations = new_instancemethod(_openbabel._OBMolBondIter_DoTransformations, None, _OBMolBondIter)
_OBMolBondIter.ClassDescription = new_instancemethod(_openbabel._OBMolBondIter_ClassDescription, None, _OBMolBondIter)
_OBMolBondIter.GetTitle = new_instancemethod(_openbabel._OBMolBondIter_GetTitle, None, _OBMolBondIter)
_OBMolBondIter.SetTitle = new_instancemethod(_openbabel._OBMolBondIter_SetTitle, None, _OBMolBondIter)
_OBMolBondIter.HasData = new_instancemethod(_openbabel._OBMolBondIter_HasData, None, _OBMolBondIter)
_OBMolBondIter.DeleteData = new_instancemethod(_openbabel._OBMolBondIter_DeleteData, None, _OBMolBondIter)
_OBMolBondIter.CloneData = new_instancemethod(_openbabel._OBMolBondIter_CloneData, None, _OBMolBondIter)
_OBMolBondIter.DataSize = new_instancemethod(_openbabel._OBMolBondIter_DataSize, None, _OBMolBondIter)
_OBMolBondIter.GetData = new_instancemethod(_openbabel._OBMolBondIter_GetData, None, _OBMolBondIter)
_OBMolBondIter.GetAllData = new_instancemethod(_openbabel._OBMolBondIter_GetAllData, None, _OBMolBondIter)
_OBMolBondIter.BeginData = new_instancemethod(_openbabel._OBMolBondIter_BeginData, None, _OBMolBondIter)
_OBMolBondIter.EndData = new_instancemethod(_openbabel._OBMolBondIter_EndData, None, _OBMolBondIter)
_OBMolBondIter_swigregister = _openbabel._OBMolBondIter_swigregister
_OBMolBondIter_swigregister(_OBMolBondIter)
# Bonds linked to Atom Iterator
class _OBAtomBondIter(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
def __init__(self, *args):
_openbabel._OBAtomBondIter_swiginit(self, _openbabel.new__OBAtomBondIter(*args))
__swig_destroy__ = _openbabel.delete__OBAtomBondIter
def __nonzero__(self):
return _openbabel._OBAtomBondIter___nonzero__(self)
__bool__ = __nonzero__
Visit = _swig_property(_openbabel._OBAtomBondIter_Visit_get, _openbabel._OBAtomBondIter_Visit_set)
_OBAtomBondIter.inc = new_instancemethod(_openbabel._OBAtomBondIter_inc, None, _OBAtomBondIter)
_OBAtomBondIter.__deref__ = new_instancemethod(_openbabel._OBAtomBondIter___deref__, None, _OBAtomBondIter)
_OBAtomBondIter.__ref__ = new_instancemethod(_openbabel._OBAtomBondIter___ref__, None, _OBAtomBondIter)
_OBAtomBondIter.SetIdx = new_instancemethod(_openbabel._OBAtomBondIter_SetIdx, None, _OBAtomBondIter)
_OBAtomBondIter.SetId = new_instancemethod(_openbabel._OBAtomBondIter_SetId, None, _OBAtomBondIter)
_OBAtomBondIter.SetBO = new_instancemethod(_openbabel._OBAtomBondIter_SetBO, None, _OBAtomBondIter)
_OBAtomBondIter.SetBondOrder = new_instancemethod(_openbabel._OBAtomBondIter_SetBondOrder, None, _OBAtomBondIter)
_OBAtomBondIter.SetBegin = new_instancemethod(_openbabel._OBAtomBondIter_SetBegin, None, _OBAtomBondIter)
_OBAtomBondIter.SetEnd = new_instancemethod(_openbabel._OBAtomBondIter_SetEnd, None, _OBAtomBondIter)
_OBAtomBondIter.SetParent = new_instancemethod(_openbabel._OBAtomBondIter_SetParent, None, _OBAtomBondIter)
_OBAtomBondIter.SetLength = new_instancemethod(_openbabel._OBAtomBondIter_SetLength, None, _OBAtomBondIter)
_OBAtomBondIter.Set = new_instancemethod(_openbabel._OBAtomBondIter_Set, None, _OBAtomBondIter)
_OBAtomBondIter.SetKSingle = new_instancemethod(_openbabel._OBAtomBondIter_SetKSingle, None, _OBAtomBondIter)
_OBAtomBondIter.SetKDouble = new_instancemethod(_openbabel._OBAtomBondIter_SetKDouble, None, _OBAtomBondIter)
_OBAtomBondIter.SetKTriple = new_instancemethod(_openbabel._OBAtomBondIter_SetKTriple, None, _OBAtomBondIter)
_OBAtomBondIter.SetAromatic = new_instancemethod(_openbabel._OBAtomBondIter_SetAromatic, None, _OBAtomBondIter)
_OBAtomBondIter.SetWedge = new_instancemethod(_openbabel._OBAtomBondIter_SetWedge, None, _OBAtomBondIter)
_OBAtomBondIter.SetHash = new_instancemethod(_openbabel._OBAtomBondIter_SetHash, None, _OBAtomBondIter)
_OBAtomBondIter.SetWedgeOrHash = new_instancemethod(_openbabel._OBAtomBondIter_SetWedgeOrHash, None, _OBAtomBondIter)
_OBAtomBondIter.SetUp = new_instancemethod(_openbabel._OBAtomBondIter_SetUp, None, _OBAtomBondIter)
_OBAtomBondIter.SetDown = new_instancemethod(_openbabel._OBAtomBondIter_SetDown, None, _OBAtomBondIter)
_OBAtomBondIter.SetInRing = new_instancemethod(_openbabel._OBAtomBondIter_SetInRing, None, _OBAtomBondIter)
_OBAtomBondIter.SetClosure = new_instancemethod(_openbabel._OBAtomBondIter_SetClosure, None, _OBAtomBondIter)
_OBAtomBondIter.UnsetHash = new_instancemethod(_openbabel._OBAtomBondIter_UnsetHash, None, _OBAtomBondIter)
_OBAtomBondIter.UnsetWedge = new_instancemethod(_openbabel._OBAtomBondIter_UnsetWedge, None, _OBAtomBondIter)
_OBAtomBondIter.UnsetUp = new_instancemethod(_openbabel._OBAtomBondIter_UnsetUp, None, _OBAtomBondIter)
_OBAtomBondIter.UnsetDown = new_instancemethod(_openbabel._OBAtomBondIter_UnsetDown, None, _OBAtomBondIter)
_OBAtomBondIter.UnsetAromatic = new_instancemethod(_openbabel._OBAtomBondIter_UnsetAromatic, None, _OBAtomBondIter)
_OBAtomBondIter.UnsetKekule = new_instancemethod(_openbabel._OBAtomBondIter_UnsetKekule, None, _OBAtomBondIter)
_OBAtomBondIter.GetIdx = new_instancemethod(_openbabel._OBAtomBondIter_GetIdx, None, _OBAtomBondIter)
_OBAtomBondIter.GetId = new_instancemethod(_openbabel._OBAtomBondIter_GetId, None, _OBAtomBondIter)
_OBAtomBondIter.GetBO = new_instancemethod(_openbabel._OBAtomBondIter_GetBO, None, _OBAtomBondIter)
_OBAtomBondIter.GetBondOrder = new_instancemethod(_openbabel._OBAtomBondIter_GetBondOrder, None, _OBAtomBondIter)
_OBAtomBondIter.GetFlags = new_instancemethod(_openbabel._OBAtomBondIter_GetFlags, None, _OBAtomBondIter)
_OBAtomBondIter.GetBeginAtomIdx = new_instancemethod(_openbabel._OBAtomBondIter_GetBeginAtomIdx, None, _OBAtomBondIter)
_OBAtomBondIter.GetEndAtomIdx = new_instancemethod(_openbabel._OBAtomBondIter_GetEndAtomIdx, None, _OBAtomBondIter)
_OBAtomBondIter.GetBeginAtom = new_instancemethod(_openbabel._OBAtomBondIter_GetBeginAtom, None, _OBAtomBondIter)
_OBAtomBondIter.GetEndAtom = new_instancemethod(_openbabel._OBAtomBondIter_GetEndAtom, None, _OBAtomBondIter)
_OBAtomBondIter.GetNbrAtom = new_instancemethod(_openbabel._OBAtomBondIter_GetNbrAtom, None, _OBAtomBondIter)
_OBAtomBondIter.GetParent = new_instancemethod(_openbabel._OBAtomBondIter_GetParent, None, _OBAtomBondIter)
_OBAtomBondIter.GetEquibLength = new_instancemethod(_openbabel._OBAtomBondIter_GetEquibLength, None, _OBAtomBondIter)
_OBAtomBondIter.GetLength = new_instancemethod(_openbabel._OBAtomBondIter_GetLength, None, _OBAtomBondIter)
_OBAtomBondIter.GetNbrAtomIdx = new_instancemethod(_openbabel._OBAtomBondIter_GetNbrAtomIdx, None, _OBAtomBondIter)
_OBAtomBondIter.FindSmallestRing = new_instancemethod(_openbabel._OBAtomBondIter_FindSmallestRing, None, _OBAtomBondIter)
_OBAtomBondIter.IsAromatic = new_instancemethod(_openbabel._OBAtomBondIter_IsAromatic, None, _OBAtomBondIter)
_OBAtomBondIter.IsInRing = new_instancemethod(_openbabel._OBAtomBondIter_IsInRing, None, _OBAtomBondIter)
_OBAtomBondIter.IsRotor = new_instancemethod(_openbabel._OBAtomBondIter_IsRotor, None, _OBAtomBondIter)
_OBAtomBondIter.IsAmide = new_instancemethod(_openbabel._OBAtomBondIter_IsAmide, None, _OBAtomBondIter)
_OBAtomBondIter.IsPrimaryAmide = new_instancemethod(_openbabel._OBAtomBondIter_IsPrimaryAmide, None, _OBAtomBondIter)
_OBAtomBondIter.IsSecondaryAmide = new_instancemethod(_openbabel._OBAtomBondIter_IsSecondaryAmide, None, _OBAtomBondIter)
_OBAtomBondIter.IsTertiaryAmide = new_instancemethod(_openbabel._OBAtomBondIter_IsTertiaryAmide, None, _OBAtomBondIter)
_OBAtomBondIter.IsAmidine = new_instancemethod(_openbabel._OBAtomBondIter_IsAmidine, None, _OBAtomBondIter)
_OBAtomBondIter.IsEster = new_instancemethod(_openbabel._OBAtomBondIter_IsEster, None, _OBAtomBondIter)
_OBAtomBondIter.IsCarbonyl = new_instancemethod(_openbabel._OBAtomBondIter_IsCarbonyl, None, _OBAtomBondIter)
_OBAtomBondIter.IsImide = new_instancemethod(_openbabel._OBAtomBondIter_IsImide, None, _OBAtomBondIter)
_OBAtomBondIter.IsSingle = new_instancemethod(_openbabel._OBAtomBondIter_IsSingle, None, _OBAtomBondIter)
_OBAtomBondIter.IsDouble = new_instancemethod(_openbabel._OBAtomBondIter_IsDouble, None, _OBAtomBondIter)
_OBAtomBondIter.IsTriple = new_instancemethod(_openbabel._OBAtomBondIter_IsTriple, None, _OBAtomBondIter)
_OBAtomBondIter.IsKSingle = new_instancemethod(_openbabel._OBAtomBondIter_IsKSingle, None, _OBAtomBondIter)
_OBAtomBondIter.IsKDouble = new_instancemethod(_openbabel._OBAtomBondIter_IsKDouble, None, _OBAtomBondIter)
_OBAtomBondIter.IsKTriple = new_instancemethod(_openbabel._OBAtomBondIter_IsKTriple, None, _OBAtomBondIter)
_OBAtomBondIter.IsClosure = new_instancemethod(_openbabel._OBAtomBondIter_IsClosure, None, _OBAtomBondIter)
_OBAtomBondIter.IsUp = new_instancemethod(_openbabel._OBAtomBondIter_IsUp, None, _OBAtomBondIter)
_OBAtomBondIter.IsDown = new_instancemethod(_openbabel._OBAtomBondIter_IsDown, None, _OBAtomBondIter)
_OBAtomBondIter.IsWedge = new_instancemethod(_openbabel._OBAtomBondIter_IsWedge, None, _OBAtomBondIter)
_OBAtomBondIter.IsHash = new_instancemethod(_openbabel._OBAtomBondIter_IsHash, None, _OBAtomBondIter)
_OBAtomBondIter.IsWedgeOrHash = new_instancemethod(_openbabel._OBAtomBondIter_IsWedgeOrHash, None, _OBAtomBondIter)
_OBAtomBondIter.IsCisOrTrans = new_instancemethod(_openbabel._OBAtomBondIter_IsCisOrTrans, None, _OBAtomBondIter)
_OBAtomBondIter.IsDoubleBondGeometry = new_instancemethod(_openbabel._OBAtomBondIter_IsDoubleBondGeometry, None, _OBAtomBondIter)
_OBAtomBondIter.Clear = new_instancemethod(_openbabel._OBAtomBondIter_Clear, None, _OBAtomBondIter)
_OBAtomBondIter.DoTransformations = new_instancemethod(_openbabel._OBAtomBondIter_DoTransformations, None, _OBAtomBondIter)
_OBAtomBondIter.ClassDescription = new_instancemethod(_openbabel._OBAtomBondIter_ClassDescription, None, _OBAtomBondIter)
_OBAtomBondIter.GetTitle = new_instancemethod(_openbabel._OBAtomBondIter_GetTitle, None, _OBAtomBondIter)
_OBAtomBondIter.SetTitle = new_instancemethod(_openbabel._OBAtomBondIter_SetTitle, None, _OBAtomBondIter)
_OBAtomBondIter.HasData = new_instancemethod(_openbabel._OBAtomBondIter_HasData, None, _OBAtomBondIter)
_OBAtomBondIter.DeleteData = new_instancemethod(_openbabel._OBAtomBondIter_DeleteData, None, _OBAtomBondIter)
_OBAtomBondIter.CloneData = new_instancemethod(_openbabel._OBAtomBondIter_CloneData, None, _OBAtomBondIter)
_OBAtomBondIter.DataSize = new_instancemethod(_openbabel._OBAtomBondIter_DataSize, None, _OBAtomBondIter)
_OBAtomBondIter.GetData = new_instancemethod(_openbabel._OBAtomBondIter_GetData, None, _OBAtomBondIter)
_OBAtomBondIter.GetAllData = new_instancemethod(_openbabel._OBAtomBondIter_GetAllData, None, _OBAtomBondIter)
_OBAtomBondIter.BeginData = new_instancemethod(_openbabel._OBAtomBondIter_BeginData, None, _OBAtomBondIter)
_OBAtomBondIter.EndData = new_instancemethod(_openbabel._OBAtomBondIter_EndData, None, _OBAtomBondIter)
_OBAtomBondIter_swigregister = _openbabel._OBAtomBondIter_swigregister
_OBAtomBondIter_swigregister(_OBAtomBondIter)
# Bond in Mols by BFS search Iterator
class OBMolBondBFSIter(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
def __init__(self, *args):
_openbabel.OBMolBondBFSIter_swiginit(self, _openbabel.new_OBMolBondBFSIter(*args))
__swig_destroy__ = _openbabel.delete_OBMolBondBFSIter
def __nonzero__(self):
return _openbabel.OBMolBondBFSIter___nonzero__(self)
__bool__ = __nonzero__
Visit = _swig_property(_openbabel.OBMolBondBFSIter_Visit_get, _openbabel.OBMolBondBFSIter_Visit_set)
OBMolBondBFSIter.inc = new_instancemethod(_openbabel.OBMolBondBFSIter_inc, None, OBMolBondBFSIter)
OBMolBondBFSIter.__deref__ = new_instancemethod(_openbabel.OBMolBondBFSIter___deref__, None, OBMolBondBFSIter)
OBMolBondBFSIter.__ref__ = new_instancemethod(_openbabel.OBMolBondBFSIter___ref__, None, OBMolBondBFSIter)
OBMolBondBFSIter.CurrentDepth = new_instancemethod(_openbabel.OBMolBondBFSIter_CurrentDepth, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetIdx = new_instancemethod(_openbabel.OBMolBondBFSIter_SetIdx, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetId = new_instancemethod(_openbabel.OBMolBondBFSIter_SetId, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetBO = new_instancemethod(_openbabel.OBMolBondBFSIter_SetBO, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetBondOrder = new_instancemethod(_openbabel.OBMolBondBFSIter_SetBondOrder, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetBegin = new_instancemethod(_openbabel.OBMolBondBFSIter_SetBegin, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetEnd = new_instancemethod(_openbabel.OBMolBondBFSIter_SetEnd, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetParent = new_instancemethod(_openbabel.OBMolBondBFSIter_SetParent, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetLength = new_instancemethod(_openbabel.OBMolBondBFSIter_SetLength, None, OBMolBondBFSIter)
OBMolBondBFSIter.Set = new_instancemethod(_openbabel.OBMolBondBFSIter_Set, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetKSingle = new_instancemethod(_openbabel.OBMolBondBFSIter_SetKSingle, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetKDouble = new_instancemethod(_openbabel.OBMolBondBFSIter_SetKDouble, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetKTriple = new_instancemethod(_openbabel.OBMolBondBFSIter_SetKTriple, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetAromatic = new_instancemethod(_openbabel.OBMolBondBFSIter_SetAromatic, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetWedge = new_instancemethod(_openbabel.OBMolBondBFSIter_SetWedge, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetHash = new_instancemethod(_openbabel.OBMolBondBFSIter_SetHash, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetWedgeOrHash = new_instancemethod(_openbabel.OBMolBondBFSIter_SetWedgeOrHash, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetUp = new_instancemethod(_openbabel.OBMolBondBFSIter_SetUp, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetDown = new_instancemethod(_openbabel.OBMolBondBFSIter_SetDown, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetInRing = new_instancemethod(_openbabel.OBMolBondBFSIter_SetInRing, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetClosure = new_instancemethod(_openbabel.OBMolBondBFSIter_SetClosure, None, OBMolBondBFSIter)
OBMolBondBFSIter.UnsetHash = new_instancemethod(_openbabel.OBMolBondBFSIter_UnsetHash, None, OBMolBondBFSIter)
OBMolBondBFSIter.UnsetWedge = new_instancemethod(_openbabel.OBMolBondBFSIter_UnsetWedge, None, OBMolBondBFSIter)
OBMolBondBFSIter.UnsetUp = new_instancemethod(_openbabel.OBMolBondBFSIter_UnsetUp, None, OBMolBondBFSIter)
OBMolBondBFSIter.UnsetDown = new_instancemethod(_openbabel.OBMolBondBFSIter_UnsetDown, None, OBMolBondBFSIter)
OBMolBondBFSIter.UnsetAromatic = new_instancemethod(_openbabel.OBMolBondBFSIter_UnsetAromatic, None, OBMolBondBFSIter)
OBMolBondBFSIter.UnsetKekule = new_instancemethod(_openbabel.OBMolBondBFSIter_UnsetKekule, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetIdx = new_instancemethod(_openbabel.OBMolBondBFSIter_GetIdx, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetId = new_instancemethod(_openbabel.OBMolBondBFSIter_GetId, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetBO = new_instancemethod(_openbabel.OBMolBondBFSIter_GetBO, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetBondOrder = new_instancemethod(_openbabel.OBMolBondBFSIter_GetBondOrder, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetFlags = new_instancemethod(_openbabel.OBMolBondBFSIter_GetFlags, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetBeginAtomIdx = new_instancemethod(_openbabel.OBMolBondBFSIter_GetBeginAtomIdx, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetEndAtomIdx = new_instancemethod(_openbabel.OBMolBondBFSIter_GetEndAtomIdx, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetBeginAtom = new_instancemethod(_openbabel.OBMolBondBFSIter_GetBeginAtom, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetEndAtom = new_instancemethod(_openbabel.OBMolBondBFSIter_GetEndAtom, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetNbrAtom = new_instancemethod(_openbabel.OBMolBondBFSIter_GetNbrAtom, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetParent = new_instancemethod(_openbabel.OBMolBondBFSIter_GetParent, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetEquibLength = new_instancemethod(_openbabel.OBMolBondBFSIter_GetEquibLength, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetLength = new_instancemethod(_openbabel.OBMolBondBFSIter_GetLength, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetNbrAtomIdx = new_instancemethod(_openbabel.OBMolBondBFSIter_GetNbrAtomIdx, None, OBMolBondBFSIter)
OBMolBondBFSIter.FindSmallestRing = new_instancemethod(_openbabel.OBMolBondBFSIter_FindSmallestRing, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsAromatic = new_instancemethod(_openbabel.OBMolBondBFSIter_IsAromatic, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsInRing = new_instancemethod(_openbabel.OBMolBondBFSIter_IsInRing, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsRotor = new_instancemethod(_openbabel.OBMolBondBFSIter_IsRotor, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsAmide = new_instancemethod(_openbabel.OBMolBondBFSIter_IsAmide, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsPrimaryAmide = new_instancemethod(_openbabel.OBMolBondBFSIter_IsPrimaryAmide, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsSecondaryAmide = new_instancemethod(_openbabel.OBMolBondBFSIter_IsSecondaryAmide, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsTertiaryAmide = new_instancemethod(_openbabel.OBMolBondBFSIter_IsTertiaryAmide, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsAmidine = new_instancemethod(_openbabel.OBMolBondBFSIter_IsAmidine, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsEster = new_instancemethod(_openbabel.OBMolBondBFSIter_IsEster, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsCarbonyl = new_instancemethod(_openbabel.OBMolBondBFSIter_IsCarbonyl, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsImide = new_instancemethod(_openbabel.OBMolBondBFSIter_IsImide, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsSingle = new_instancemethod(_openbabel.OBMolBondBFSIter_IsSingle, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsDouble = new_instancemethod(_openbabel.OBMolBondBFSIter_IsDouble, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsTriple = new_instancemethod(_openbabel.OBMolBondBFSIter_IsTriple, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsKSingle = new_instancemethod(_openbabel.OBMolBondBFSIter_IsKSingle, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsKDouble = new_instancemethod(_openbabel.OBMolBondBFSIter_IsKDouble, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsKTriple = new_instancemethod(_openbabel.OBMolBondBFSIter_IsKTriple, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsClosure = new_instancemethod(_openbabel.OBMolBondBFSIter_IsClosure, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsUp = new_instancemethod(_openbabel.OBMolBondBFSIter_IsUp, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsDown = new_instancemethod(_openbabel.OBMolBondBFSIter_IsDown, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsWedge = new_instancemethod(_openbabel.OBMolBondBFSIter_IsWedge, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsHash = new_instancemethod(_openbabel.OBMolBondBFSIter_IsHash, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsWedgeOrHash = new_instancemethod(_openbabel.OBMolBondBFSIter_IsWedgeOrHash, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsCisOrTrans = new_instancemethod(_openbabel.OBMolBondBFSIter_IsCisOrTrans, None, OBMolBondBFSIter)
OBMolBondBFSIter.IsDoubleBondGeometry = new_instancemethod(_openbabel.OBMolBondBFSIter_IsDoubleBondGeometry, None, OBMolBondBFSIter)
OBMolBondBFSIter.Clear = new_instancemethod(_openbabel.OBMolBondBFSIter_Clear, None, OBMolBondBFSIter)
OBMolBondBFSIter.DoTransformations = new_instancemethod(_openbabel.OBMolBondBFSIter_DoTransformations, None, OBMolBondBFSIter)
OBMolBondBFSIter.ClassDescription = new_instancemethod(_openbabel.OBMolBondBFSIter_ClassDescription, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetTitle = new_instancemethod(_openbabel.OBMolBondBFSIter_GetTitle, None, OBMolBondBFSIter)
OBMolBondBFSIter.SetTitle = new_instancemethod(_openbabel.OBMolBondBFSIter_SetTitle, None, OBMolBondBFSIter)
OBMolBondBFSIter.HasData = new_instancemethod(_openbabel.OBMolBondBFSIter_HasData, None, OBMolBondBFSIter)
OBMolBondBFSIter.DeleteData = new_instancemethod(_openbabel.OBMolBondBFSIter_DeleteData, None, OBMolBondBFSIter)
OBMolBondBFSIter.CloneData = new_instancemethod(_openbabel.OBMolBondBFSIter_CloneData, None, OBMolBondBFSIter)
OBMolBondBFSIter.DataSize = new_instancemethod(_openbabel.OBMolBondBFSIter_DataSize, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetData = new_instancemethod(_openbabel.OBMolBondBFSIter_GetData, None, OBMolBondBFSIter)
OBMolBondBFSIter.GetAllData = new_instancemethod(_openbabel.OBMolBondBFSIter_GetAllData, None, OBMolBondBFSIter)
OBMolBondBFSIter.BeginData = new_instancemethod(_openbabel.OBMolBondBFSIter_BeginData, None, OBMolBondBFSIter)
OBMolBondBFSIter.EndData = new_instancemethod(_openbabel.OBMolBondBFSIter_EndData, None, OBMolBondBFSIter)
OBMolBondBFSIter_swigregister = _openbabel.OBMolBondBFSIter_swigregister
OBMolBondBFSIter_swigregister(OBMolBondBFSIter)