def parseBonds(self): ''' read some bond attributes ''' bonds = {} # dictionary with bond objects, both orientations atom_pairs = [] # atom index pairs only, unique for bond in self.tkmol.iterateBonds(): # start, end, bond_type, stereo = numbers start = bond.source().index() end = bond.destination().index() bond_type = bond.bondOrder() # 1,2,3,4 for single, double, triple, aromatic stereo = bond.bondStereo() start_atom = self.atoms[start] end_atom = self.atoms[end] bond = Bond(self.options, start_atom, end_atom, bond_type, stereo) # we store both orientations of the bond, since we don't know yet # which way it will be used bonds[(start, end)] = bond bonds[(end, start)] = bond.invert() atom_pairs.append((start, end)) return bonds, atom_pairs
def link_atoms(self, x, y): ''' connect atoms with indexes x and y using a pseudo bond. Helper for connect_fragments ''' start_atom = self.atoms[x] end_atom = self.atoms[y] bond = Bond(self.options, start_atom, end_atom) bond.set_link() self.bonds[(x, y)] = bond self.bonds[(y, x)] = bond.invert() start_atom.neighbors.append(y) end_atom.neighbors.append(x)